1

私はEntityFrameworkを初めて使用しますが、NHibernateの経験があります。複数の子コレクションを持つオブジェクトをロードしようとしていますが、両方の子コレクションを熱心にロードしようとしています。

私は次のようなことができると思います:

return DataContext.Users.Include("ChildCollection1").Include("ChildCollection2")

しかし、Futureを使用してNHibernateでできるように、パフォーマンスを向上させるためにそれを2つのクエリに分割する方法はありますか?

4

4 に答える 4

1

NHについては何も知りませんが、EFでの明示的な読み込みを意味しますか?

Context.Entry(aUser).Collection(u => u.ChildCollectionX).Load();
于 2012-09-01T04:07:55.723 に答える
0

ここで説明するように、NHibernateの先物は、クエリをバッチで実行するために、クエリの実行を後の瞬間に延期する方法です。NHibernateのMultiQuery機能を使用します。

Entity Frameworkには、このようなものはありません。これまでのところ、Include子コレクションを1回で読み込む唯一のオプションです。

ロードマップは、あまり詳細ではありませんが、この方向の計画を示していません。

于 2012-09-02T10:47:51.153 に答える
0

私がこれまでに見つけた最良の解決策は、EntityFramework.ExtendedライブラリのFutureQueries機能です:https ://github.com/loresoft/EntityFramework.Extended/wiki/Future-Queries 。

于 2016-10-11T14:28:36.597 に答える
-1

ラムダで動作させることはできませんでしたが、文字列パスで動作します...

        using (var db = new CMWebTestContext())
        {
           var q = db.WebTestResults.Include("TestCollection.TransactionCollection.PageCollection");
           var r = q.ToList();
           return r;
        }
于 2013-06-11T22:21:15.043 に答える