2016-07-05 109 views
3

当我使用的EntityFramework 7.0.0-RC1我写了这样的事情:实体框架的核心1.0.0:预先加载与WHERE子句

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

您使用EFCorce 1 RTM吗? – Nils

+0

@Nils是的。 “Microsoft.EntityFrameworkCore”:“1.0.0”,“Microsoft.EntityFrameworkCore.Tools”:{ “version”:“1.0.0-preview2-final”, “type”:“build” },' – Slip

+0

那么,它应该工作 - 根据官方文档:https://docs.efproject.net/en/latest/querying/related-data.html – Nils

回答

2

不能使用包含在EF核心一样,因为该值不能不能在表达式树译:

只是用它这样的:

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