当我使用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
尚未加载数据。所以现在我需要首先用所有相关数据实例化我的集合然后查询它。
之前的方法似乎是优化的,因为只有数据库查询(不是吗?)。我现在该怎么办呢?
P.S。我正在使用Npgsql.EntityFrameworkCore.PostgreSQL 1.0.0
答案 0 :(得分:2)
您不能在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();