代码优先模型外键属性SocialDetails为空,即使当ID';s在数据库中匹配

本文关键字:ID 数据库 模型 属性 为空 SocialDetails 代码 | 更新日期: 2023-09-27 17:58:03

我正在尝试调试DBContext查询,生成的SQL看起来像这个

SELECT 
[Extent1].[Id] AS [Id], 
[Extent1].[Name] AS [Name], 
[Extent1].[SocialDetails_Id] AS [SocialDetails_Id]
FROM [dbo].[Items] AS [Extent1]
WHERE [Extent1].[Id] = @p__linq__0

然而,即使我在DB 中检查了ID,外键属性SocialDetails也是空的

 public class Item
    {
        public int Id { get; set; }
 public string Name { get; set; }
          [Required]
        public User User { get; set; }
          [Required]
        public SocialDetails SocialDetails { get; set; }
etc

找出SocialDetails为何总是为空的最佳方法是什么?

代码优先模型外键属性SocialDetails为空,即使当ID';s在数据库中匹配

您可能禁用了延迟加载。

正如Matt Whetton所建议的,试着做这样的事情:

var items = from x in dbContext.Items.Include("SocialDetails")
            where x.Id = id
            select x;

其中dbContext是您的上下文,并且您有一个名为Items 的DbSet

另请参阅此链接(MSDN):

加载相关对象