2

假设您在安装了 Northwind 数据库副本的 SQL 2005 中工作。您在使用员工“浏览”页面的 ASP.NET 应用程序上工作。在页面顶部,您有一个“标题”过滤器,您希望在下拉列表中显示这 5 个选项:

[全部]
销售副总裁、
销售代表
销售经理
内部销售协调员

在 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 条记录重复了两次。我只想要不同的结果。因此,记录总数应为 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 回答