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

时间:2018-09-19 23:53:50

标签: c# entity-framework entity-framework-core

我有点像EF newb,并且我使用的是.net core,除非我执行完整的“ from..in..join”,否则我似乎无法加载实体的相关实体。 “ linq语句。

我的实体具有Guid主键,并且我正在使用SQL Server作为数据库。

让我们看看我遇到问题的一个实体。

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

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

用户可以选择一个组作为其“选定”组。我运行了迁移语句,并确定它确实在数据库上创建了我想要的东西-一个名为CurrentSelectedGroupId的全新列,它是Group表的PK列的FK。

所以看起来很棒。

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

现在,当我执行以下代码行时:

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

它完美地返回了我的用户,但是所有相关的实体都是空的。 我什至尝试过.include()之类的东西,包括“虚拟”,但没有运气。

知道我在做什么错吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

经过反复试验,似乎可以正常工作:

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

有什么想法为什么还能奏效?

谢谢

答案 1 :(得分:0)

未启用延迟加载,此功能已包含在EF Core 2.1中。在您的情况下,Explicit Loading正在发生,因此您需要显式加载相关实体。因此,如果您使用的是EF Core 2.1,则只需启用Lazy Loading并使用相关实体,而无需显式添加它们。