尝试从数据库中获取实体列表时出现InvalidTaskException

时间:2015-12-02 09:15:09

标签: c# entity-framework linq entity-framework-core

我正在尝试使用Entity框架7从我的MS Server数据库中获取实体列表,其中实体具有嵌套对象,并且该对象还具有嵌套对象,我在其中检查条件。我的代码如下所示:

List<MyObj> MyObjList = DbContext.MyObj.Include(x => x.MyNestedObj).ThenInclude(x => x.MyNestedNestedObj).Where(x=>x.MyNestedObj.MyNestedNestedObj.ID==SomeValue).ToList();

当我尝试这个时,我得到:

  

InvalidTaskException无法强制转换   System.Linq.Expressions.FieldExpression to   System.Linq.Expressions.ParameterExpression

我在我的项目中多次做过这种事情,我只有嵌套对象的级别,并且它工作正常。当我第一次把它们全部拿出然后按照这样的条件排序时它也有效:

List<MyObj> MyObjList = DbContext.MyObj.Include(x => x.MyNestedObj).ThenInclude(x => x.MyNestedNestedObj).toList();
List<MyObj> MyObjList2=MyObjList. Where(x=>x.MyNestedObj.MyNestedNestedObj.ID==SomeValue).ToList();

但是我不希望每次这样做都能得到整张桌子我想像其他地方一样一步完成。

1 个答案:

答案 0 :(得分:0)

我想你应该替换你的WhereInclude方法,试试这样:

List<MyObj> MyObjList = DbContext.MyObj
    .Where(x => x.MyNestedObj.MyNestedNestedObj.ID == SomeValue)
    .Include(x => x.MyNestedObj)
    .ThenInclude(x => x.MyNestedNestedObj)
    .ToList();