实体框架核心1.0.0:使用Where子句

时间:2016-07-05 09:42:58

标签: c# entity-framework-core npgsql

当我使用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

1 个答案:

答案 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();