实体框架6急切加载

时间:2016-09-05 08:52:38

标签: c# .net entity-framework entity-framework-6

我需要将表中的实体加载到本地缓存中,以便在应用程序窗口的网格控件中显示它们。网格控件从Local的{​​{1}}属性获取其数据。实体有一个子实体集合,这些子实体也需要提前加载,因为延迟加载不会以某种方式对DbSet<>实体起作用。

实体类具有所有映射属性Local,并且正在使用扩展更改跟踪代理。

这是我发现的:

virtual

这不受支持,实际上编译器会抛出错误,因为没有myContext.Components.Include(x => x.Parts).ToList(); 重载接受除字符串以外的任何内容。我不知道为什么每个人都在这里显示带有表达式的代码,如果EF不提供。所以这就是我所做的事情:

Include

不幸的是,这根本没有效果。当我查看零件清单时,它总是空的:

myContext.Components.Include("Parts").ToList();

var firstEntity = myContext.Components.Local.First(); var count = firstEntity.Parts.Count; // count should be > 0 but is = 0 方法指定一个不同的,不存在的路径会在运行时抛出异常,因此EF确实会查看该路径字符串并对其进行验证。

访问Include列表后,一段时间后,部分将出现在列表中,但为时已晚,我不知道它们来自哪里。

那么表达式参数Parts方法有什么用呢,为什么它根本不起作用呢?还有什么我需要考虑使用急切加载?

实体框架6.1.3(大多数其他内容似乎适用于旧版本)。

以下是课程:

Include

0 个答案:

没有答案