Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/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# 实体框架核心-延迟加载不起作用_C#_Entity Framework Core_Asp.net Core 2.0 - Fatal编程技术网

C# 实体框架核心-延迟加载不起作用

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

考虑到以下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 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; }

}