Entity Framework Core 1.0.0:使用Where子句進行預先加載

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運行尚未加載的數據。所以現在我需要首先用所有相關數據實例化我的集合然後查詢它。以前的方法似乎是優化的,因為只有數據庫查詢(不是嗎?)。我現在該怎麼辦呢?

PS我正在使用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();


Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因