当我使用 EntityFramework 7.0.0-rc1 时,我写了这样的东西:
context.MyEntity
.Include(e=>e.MySubEntities)
.Where(e=>e.MySubEntities.Contains(value))
.Where(e=>e.Status==1)
.ToList();
在 EFCore 1.0.0 中,相同的代码会引发异常。我想 Include
在第一个 Where
运行时还没有加载数据。所以现在我需要首先用所有相关数据实例化我的集合,然后查询它。
以前的方法似乎已经过优化,因为只有数据库查询(不是吗?)。我现在如何做同样的事情?
附言我正在使用 Npgsql.EntityFrameworkCore.PostgreSQL 1.0.0
最佳答案
您不能像那样在 EF Core 中使用 Contains,因为无法在表达式树中转换该值:
就这样使用它:
var tmp = myConext.MyEntity
.Include(e=>e.MySubEntities)
.Where(x => x.MySubEntities.Select(id=>id.MySubEntitiesId).Contains(value.MySubEntitiesId))
.Where(e=>e.Status==1)
.ToList();
关于c# - Entity Framework 核心 1.0.0 : Eager loading with Where-clause,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38200123/