给出以下3个(简化的)类:
当我尝试加载JunctionClass
列表时...
var junctionClassList = _appDbContext.JunctionClass
.Include(jc => jc.ClassA)
.Include(jc => jc.ClassB).ToList();
该代码不会加载ClassA
和ClassB
对象。
我找到了一个修复程序,但是我不认为我使用EF Core的方式应该使用它:
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
依赖项。
我的问题是-这是使用懒惰/急切加载的正确方法吗?还是有另一种方法?
答案 0 :(得分:0)
在这种情况下,您正在使用Include
进行Eager加载。 Lazy loading在EF Core 2.1中引入。您需要明确启用它。
答案 1 :(得分:-1)
以下定义适用于Include
。
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; }
}
与我们分享您的不同之处。