代码之家  ›  专栏  ›  技术社区  ›  NullHypothesis

实体框架-似乎无法加载相关实体

  •  1
  • NullHypothesis  · 技术社区  · 7 年前

    我是一个EF新手,我使用的是.netcore,我似乎无法加载实体的相关实体,除非我执行一个完整的“from..in..join”linq语句。

    我的实体有Guid主键,我使用sqlserver作为数据库。

    让我们看看一个实体,我有麻烦。

    [Table("User")]
    public class User : AuditableEntity
    {
      public Group CurrentlySelectedGroup { get; set; }
    }
    
    [Table("Group")]
    public class Group : AuditableEntity
    {      
      public string Name { get; set; }
    }
    

    用户可以选择一个组作为他们的“选定”组。我运行了migration语句,果然它在DB上创建了我想要的内容—一个名为CurrentlySelectedGroupId的全新列,它是Group表PK列的FK。

    然后我运行了一些代码,将有效组的有效Guid添加到表中。

    现在当我执行这行代码时:

     var user = _dbContext.Users.Where(u => u.Id == userId).FirstOrDefault();
    

    我甚至尝试过像.Include(),包括“virtual”这样的东西,但是运气不好。

    知道我做错了什么吗?

    谢谢!

    2 回复  |  直到 7 年前
        1
  •  0
  •   Vivek Nuna Chetan sabhaya    7 年前

    延迟加载未启用,此功能已包含在EF Core 2.1中。对你来说 Explicit Loading Lazy Loading 使用相关实体而不显式添加它们。

        2
  •  1
  •   NullHypothesis    7 年前

      var user = _dbContext.Users.Single(u => u.Id == userId);
      _dbContext.Entry(user).Reference(u => u.CurrentlySelectedGroup).Load();
    

    你知道为什么这会奏效吗?