尝试从数据库获取实体列表时出现InvalidTaskException
本文关键字:InvalidTaskException 列表 实体 数据库 获取 | 更新日期: 2023-09-27 18:25:15
我正试图使用实体框架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到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();
但我不想每次都得到整张桌子,我想像其他地方一样一步到位。
我想你应该替换你的Where
和Include
方法,试着这样做:
List<MyObj> MyObjList = DbContext.MyObj
.Where(x => x.MyNestedObj.MyNestedNestedObj.ID == SomeValue)
.Include(x => x.MyNestedObj)
.ThenInclude(x => x.MyNestedNestedObj)
.ToList();