私はEntity Frameworkのコアは複数のクエリを実行して、このデータをフェッチしているEntity Frameworkコアでオブジェクトグラフをロードするにはどうすればよいですか?
from user in Users
.Include("UserCategoryPermissions")
.Include("UserResourcePermissions")
.Include("UserPermissions.Permission.Application")
.Include("UserGroupMembers.UserGroup.UserGroupPermissions.Permission.Application")
where user.Id == 3
をフェッチする必要があるいくつかのリレーショナル・データを持っています。私がやりたいことは、オブジェクトグラフをメモリにロードすることです(投影はしません)。そして、複数のクエリは本当に遅くなるでしょう。私はたくさんで大規模なクエリを実行して、これらのオブジェクトを事前に読み込むことができ
は
from a in A
join b in B on a.Id equals b.A_Id into bJoin from b in bJoin.DefaultIfEmpty()
join c in C on b.Id equals c.B_Id into cJoin from c in cJoin.DefaultIfEmpty()
join x in X on a.Id equals x.A_Id into xJoin from x in xJoin.DefaultIfEmpty()
// etc
select new {
a, b, c, x
}
に参加するしかし、私はデータをフェッチするたびに本当の痛みになり、これを行うために持ちます。 Entity Framework Coreにデータグラフをプリロードする方法がありますか?理想的には、各文字列がパスを識別する(上記のように)文字列の配列から作業するのが理想的ですが、これらのグラフをパラメータを使用してメソッドに渡すことができます。
これはEFが今実装した方法です。しかし、あまりに簡単に結論を出して1つのコールがより良い結果を出すようにしないでください。 EF6(常に1つの呼び出し)には、クエリの処理速度が大幅に低下する傾向があります。 –
@ GertArnold私は、6つのクエリに対して250-300msの違いが見られます。 –
これはかなり説得力があります:)私は彼らがそれに取り組んでいることを知っていますが、私は現在問題番号を見つけることができません。 –