2016-07-05 86 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();