0

CreateCriteria を使用して Nhibernate で次の SQL ステートメントを作成するにはどうすればよいですか。

SELECT distinct top 20 a.* from ActivityLog a left join WallPost w on a.ActivityLogId = w.ActivityLogId left join ItemStatus i on i.StatusId = w.ItemStatus

ActivityLogテーブルにマップしても、SQLステートメントで返されるすべてのテーブルからすべての列を取得して重複を生成する傾向があります。以下のコードが示すように、ページングも行っています。

ICriteria crit = nhelper.NHibernateSession.CreateCriteria(typeof(Model.ActivityLog), "a").CreateAlias("a.WallPosts", "w",CriteriaSpecification.LeftJoin) .CreateAlias("w.ItemStatus", "i", CriteriaSpecification.LeftJoin) .SetMaxResults(pageSize).SetFirstResult(startRow).AddOrder(Order.Desc("a.Date"));

ありがとう

H

4

2 に答える 2

0

「NHibernate CreateQueryを使用して 1 つのテーブルを選択する方法」(HQL) を尋ねます。その場合、select を使用してフェッチするものを選択できます。

あなたのテキストでは、基準を使用しています。私の知る限り、読みたい列を直接制御することはできません。ただし、結合に DetachedCriteria を作成すると、これはフェッチされません。

于 2012-07-05T13:23:56.913 に答える
0

マッピング ファイルで遅延読み込みを false に設定しているように聞こえますが、これは、すべての関連付けと子コレクションも読み込まれていることを意味します。それを確認できますか?

于 2012-07-05T13:21:23.707 に答える