MgS*_*Sam 6 .net c# entity-framework entity-framework-5
好的,所以根据这个页面,实体框架应该通过Select在Include方法中使用a来急切地加载多个级别.
我有以下代码:
var reports = _context.Reports
.Include(rt => rt.Fields)
.Include(rt => rt.Fields.Select(f => f.FieldType))
.Include(rt => rt.Fields.Select(f => f.FieldType.FieldIdentifier));
Run Code Online (Sandbox Code Playgroud)
然而,这会InvalidOperationException在第二个包含的调用中抛出一个"无效的表达式".异常来自EntityFrameworkHelper.CollectRelationalMemebers.
我也尝试将字符串用于Include相关属性,但也失败了(如果可能的话,我宁愿避免使用字符串).
我正在使用适用于.NET 4.0的EF 5.0 DLL.我的EF类是老式的数据库优先EntityObject.
有没有人知道原因,我是否可以对此例外做些什么?
编辑:
使用字符串版本时:
var reports = _context.Reports
.Include("Fields")
.Include("Fields.FieldType")
.Include("Fields.FieldType.FieldIdentifier"));
Run Code Online (Sandbox Code Playgroud)
它抛出InvalidOperationException- 表达式的无效类型.
Jac*_*hea 20
你有多余的包括.您只需要最后一个包含,其中包含该路径中的任何内容.例:
var reports = _context.Reports
.Include(rt => rt.Fields.Select(f => f.FieldType.FieldIdentifier));
Run Code Online (Sandbox Code Playgroud)
问题最终是我们使用的 DLL 中的第三方Include扩展方法优先于实体框架的Include. 第三方抛出异常。删除后问题就解决了。
扩展方法的问题之一......
感谢大家的帮助。
| 归档时间: |
|
| 查看次数: |
6364 次 |
| 最近记录: |