C# 实体框架核心-延迟加载不起作用
考虑到以下3个简化类: ClassA{int Id;} 类B{int Id;} 连接类{ClassA ClassA;ClassB ClassB;} 当我尝试加载JunctionClass列表时 代码不加载ClassA和ClassB对象 我已经找到了一个解决方案,但我不认为我正在以应该使用的方式使用EF Core:C# 实体框架核心-延迟加载不起作用,c#,entity-framework-core,asp.net-core-2.0,C#,Entity Framework Core,Asp.net Core 2.0,考虑到以下3个简化类: ClassA{int Id;} 类B{int Id;} 连接类{ClassA ClassA;ClassB ClassB;} 当我尝试加载JunctionClass列表时 代码不加载ClassA和ClassB对象 我已经找到了一个解决方案,但我不认为我正在以应该使用的方式使用EF Core: var classAList = _appDbContext.ClassA.ToList(); var classBList = _appDbContext.ClassB.ToList
var classAList = _appDbContext.ClassA.ToList();
var classBList = _appDbContext.ClassB.ToList();
var junctionClassList = _appDbContext.JunctionClass
.Include(jc => jc.ClassA)
.Include(jc => jc.ClassB).ToList();
这样,junctionClassList对象也将加载classA和classB依赖项
我的问题是,这是使用懒惰/急切加载的正确方法吗?或者还有其他方法吗?在本例中,您使用的是即时加载,使用的是Include。在EF Core 2.1中介绍。您需要显式地启用它。下面的定义适用于Include
与我们分享与您的不同之处。您是否在JunctionClass中为ClassA和ClassB添加了虚拟关键字?我添加了,但仍然没有结果。但是,在添加virtual关键字后,我没有更新数据库。我应该吗?你有哪一个EF核心版本?2.1.3-rtm-32065在这里检查如果我现在正在使用急切加载,classA和classB对象不应该加载吗?
var classAList = _appDbContext.ClassA.ToList();
var classBList = _appDbContext.ClassB.ToList();
var junctionClassList = _appDbContext.JunctionClass
.Include(jc => jc.ClassA)
.Include(jc => jc.ClassB).ToList();
public class JunctionClass
{
public int Id { get; set; }
public string Name { get; set; }
public virtual ClassA ClassA { get; set; }
public virtual ClassB ClassB { get; set; }
}
public class ClassA
{
public int Id { get; set; }
public string Name { get; set; }
}
public class ClassB
{
public int Id { get; set; }
public string Name { get; set; }
}