如何使用NHibernate 2和Fluent映射与别名进行子选择

时间:2015-08-04 01:03:03

标签: c# nhibernate fluent-nhibernate nhibernate-2

我维持一个大稳定。遗留系统仍然在NHibernate 2上。

注意:很遗憾,此时无法升级,但计划在未来进行升级

我正在尝试在搜索特定项目时进行子选择。

我想生成类似于以下SQL的内容

devtools::test()

我的子选择如下:

SELECT
   u.Id,
   u.Name,
   u.Email,
   (SELECT TOP 1 FROM Notifications n WHERE n.UserId = u.Id ORDER BY DateSent DESC) AS LastNotification
FROM
   Users u

我使用//... Map(x => x.LastNotification).Formula("(SELECT TOP 1 FROM Notifications n WHERE n.UserId = this_.Id ORDER BY DateSent DESC)").ReadOnly(); //.. 来引用this_表,因为它是由NHibernate生成的

当User实体是另一个相关实体的属性时会出现问题,因此Users会成为其他实体。

正如预期的那样,SQL错误是this_

我一直在努力寻找一种创建别名的方法,似乎找不到我可以用于我的案例的解决方案..

如何在NHibernate 2中进行子选择?

1 个答案:

答案 0 :(得分:0)

在这里找到答案。我不得不删除this_

NHibernate将推断出定义公式的当前实体。

https://stackoverflow.com/a/9515787/919426