Entity Framework Core 1.0.0:Where節を使用したEagerローディング

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では、同じコードが例外をスローします。私は最初のWhereランがデータをロードしていないのWhereを現時点でIncludeと仮定しInclude 。だから私は最初に関連するすべてのデータで私のコレクションをインスタンス化し、次にそれを照会する必要があります。以前のアプローチは、唯一のデータベースクエリがあったので最適化されたようでした(そうではありませんでしたか?)。どうすれば同じことができますか?

PS私はNpgsql.EntityFrameworkCore.PostgreSQL 1.0.0を使用しています

人気のある回答

式ツリーで値を変換できないため、EFコアで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は合法ですか? はい、理由を学ぶ