POCO ドメイン オブジェクトを渡す必要があります (熱心に読み込まれます)。Entity Framework と NHibernate の両方を分析しましたが、解決策が見つかりません!
基礎となる SQL とクエリを NHibernate で分析したところ、
ISession.CreateQuery (string HQL).SetMaxResults(N)
SQL には実装されていませんTOP N
が、常にすべてのデータを .NET にダウンロードしてからサブセットを取得します (非常にばかげています)。
巨大なテーブルに複雑なクエリを送信するにはどうすればよいでしょうか?
ICreteria
( SetMaxResults
SQL で実装) とIQueryOver
( SQLTake()
では impl) は柔軟性がありません。たとえば、熱心な読み込みは左結合でのみ可能です。また、カスタム サブクエリ、トップ、フィルタリング、オーダー バイなどもあります。明らかに、SQL の柔軟性ははるかに高いレベルにあります。
Entity Framework は流動的で、魔法を実現しているように見えますが、SOO-O DAMN SLOW!
私が考えることができる最も柔軟な熱心な読み込みは、1 週間の作業の後、プリロードされたandTOP N
によって実装されたHQLです。IList
SetParameterList
より良い解決策はありますか?