0

POCO ドメイン オブジェクトを渡す必要があります (熱心に読み込まれます)。Entity Framework と NHibernate の両方を分析しましたが、解決策が見つかりません!

基礎となる SQL とクエリを NHibernate で分析したところ、

ISession.CreateQuery (string HQL).SetMaxResults(N)

SQL には実装されていませんTOP Nが、常にすべてのデータを .NET にダウンロードしてからサブセットを取得します (非常にばかげています)。

巨大なテーブルに複雑なクエリを送信するにはどうすればよいでしょうか?

ICreteria( SetMaxResultsSQL で実装) とIQueryOver( SQLTake()では impl) は柔軟性がありません。たとえば、熱心な読み込みは左結合でのみ可能です。また、カスタム サブクエリ、トップ、フィルタリング、オーダー バイなどもあります。明らかに、SQL の柔軟性ははるかに高いレベルにあります。

Entity Framework は流動的で、魔法を実現しているように見えますが、SOO-O DAMN SLOW!

私が考えることができる最も柔軟な熱心な読み込みは、1 週間の作業の後、プリロードされたandTOP Nによって実装されたHQLです。IListSetParameterList

より良い解決策はありますか?

4

1 に答える 1

0

私はかなり外れているかもしれませんが(今は答えを確認できません)、クエリ自体に「上位X」を渡すことはできません. 何かのようなもの:

ISession.CreateQuery("select top" + n + " ...");
于 2013-06-16T07:45:39.643 に答える