Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.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#_.net_Entity Framework_Entity Framework 5 - Fatal编程技术网

C# 实体框架加载多个级别异常

C# 实体框架加载多个级别异常,c#,.net,entity-framework,entity-framework-5,C#,.net,Entity Framework,Entity Framework 5,好的,根据,实体框架应该通过在Include方法中使用Select急切地加载多个级别 我有以下代码: 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

好的,根据,实体框架应该通过在
Include
方法中使用
Select
急切地加载多个级别

我有以下代码:

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));
然而,这会在调用第二个include时抛出一个
invalidoOperationException
-“Invalid type of expression”。异常来自
EntityFrameworkHelper.CollectionRelationalMemebers

我还尝试使用字符串来
包含相关属性,但也失败了(如果可能的话,我宁愿避免使用字符串)

我正在使用.NET4.0的EF5.0DLL。我的EF类是老式的数据库优先
EntityObject
s

有人知道原因吗?如果我能为这个异常做些什么

编辑:

使用字符串版本时:

var reports = _context.Reports
    .Include("Fields")
    .Include("Fields.FieldType")
    .Include("Fields.FieldType.FieldIdentifier"));

它抛出无效操作异常-表达式类型无效。

您有多余的include。您只需要最后一个include,它将包含该路径中的任何内容。例如:

var reports = _context.Reports
    .Include(rt => rt.Fields.Select(f => f.FieldType.FieldIdentifier));

最后的问题是,我们使用的DLL中的第三方
Include
扩展方法优先于实体框架的
Include
。第三方正在抛出异常。移除后,问题得到解决

扩展方法的问题之一


谢谢大家的帮助。

当您使用基于字符串的
Include
版本时,确切的异常消息是什么?我指的是基于字符串的
Include
版本的异常。抱歉,这太愚蠢了。我刚刚在第二个示例中粘贴了错误的代码。这是基于字符串的版本的异常。对于字符串版本,异常是否真的为“表达式类型无效”?这很奇怪,因为字符串不是表达式。好问题……帮助我避免了混淆