2

Northwind データベースのコピーがインストールされた SQL 2005 で作業しているとします。従業員の「参照」ページを使用して ASP.NET アプリケーションで作業しています。ページの上部には、次の 5 つの選択肢をドロップダウンに表示する「タイトル」フィルターがあります。

[ALL]
バイス プレジデント、営業
担当者
セールス マネージャー
インサイド セールス コーディネーター

T-SQL では、以下のステートメントのようなものを使用してリストを取得します。

SELECT DISTINCT Title FROM Employees ORDER BY Title

NHibernate でこれを行う最善の方法は何ですか? 初期のデータベース設計が (Northwind のように) 制御不能であると仮定します...つまり、正規化のために Titles または Positions テーブルを作成しないということです。

ありがとう。

4

3 に答える 3

1

nhibernate.info/doc/howto/various/get-unique-results-from-joined-queries.htmlを参照してください

于 2009-02-18T00:59:37.790 に答える
0

回答: テーブルに 29 のレコードがあり、4 つのレコードが 2 回繰り返されています。個別の結果のみが必要です。したがって、レコードの総数は 25 になるはずです。

以下はテスト方法です

[TestMethod]
public void UserApplicationsTest()
{
    int usercount = 25;
    string query = "select from User u left outer join fetch u.ApplicationRequests ar";

    ISession session = NHibernateSessionManager.GetSession();


    IList<User> users = session.CreateQuery
       (
       query
       )
       .List<User>()
       .Distinct<User>().ToList();


    Assert.AreEqual(usercount, users.Count);

}
于 2009-10-14T18:24:26.623 に答える
-2
criterion =  ... // SELECT Title FROM Employees ORDER BY Title
criterion.SetResultTransformer(new NHibernate.Transform.DistinctRootEntityResultTransformer())
于 2009-02-17T22:31:17.600 に答える