Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架-Can';似乎无法加载相关实体_C#_Entity Framework_Entity Framework Core - Fatal编程技术网

C# 实体框架-Can';似乎无法加载相关实体

C# 实体框架-Can';似乎无法加载相关实体,c#,entity-framework,entity-framework-core,C#,Entity Framework,Entity Framework Core,我有点EF新手,我使用的是.NETCore,我似乎无法加载实体的相关实体,除非我执行一个完整的“from..in..join”linq语句 我的实体有Guid主键,我使用SQL Server作为数据库 让我们看看我遇到麻烦的一个实体 [Table("User")] public class User : AuditableEntity { public Group CurrentlySelectedGroup { get; set; } } [Table("Group")] public

我有点EF新手,我使用的是.NETCore,我似乎无法加载实体的相关实体,除非我执行一个完整的“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; }
}
用户可以选择一个组作为其“选定”组。我运行了迁移语句,果然它在DB上创建了我想要的内容——一个名为CurrentlySelectedGroupId的全新列,它是组表PK列的FK

这看起来很棒

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

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

 var user = _dbContext.Users.Where(u => u.Id == userId).FirstOrDefault();
它完美地返回了我的用户,但是所有相关的实体都是空的。 我甚至尝试过.Include(),包括“virtual”,但运气不好

知道我做错了什么吗


谢谢

经过多次尝试和错误后,似乎以下工作:

  var user = _dbContext.Users.Single(u => u.Id == userId);
  _dbContext.Entry(user).Reference(u => u.CurrentlySelectedGroup).Load();
你知道为什么这会起作用吗


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

您是在尝试延迟加载还是急于加载导航属性?如果我错了,请更正我,但如果我指定virtual,如果不使用,则立即加载?之后使用Include函数where@viveknuna没有运气-还有其他想法吗?你写了什么?你有哪个EF核心版本?