使用NHibernate从子查询而不是实体中进行选择

时间:2013-07-05 03:03:13

标签: nhibernate

使用QueryOver或CreateCriteria是否可以:

SELECT FooName, SUM(FooAmount)
FROM (
     SELECT
         (SELECT Name FROM Foo
         WHERE Foo.BarId = Bar.Id) as FooName,
         FooAmount
     FROM Bar
) as inner_query
GROUP BY FooName

请注意,此查询是为了演示目的而构建的。我不想添加实体之间的关系,重写查询本身等。此外,应用程序设置为利用CreateCriteria的查询构造 - 不可能将其更改为HQL。

可以在NHibernate中构造内部查询作为一个分离标准。问题是让NHibernate从内部查询中选择,而不是在实体上选择。有谁知道这是否可行?

1 个答案:

答案 0 :(得分:1)

NHibernate - 作为典型的ORM工具 - 在对象模型之上提供查询/域操作语言(HQL,QueryOver,Criteria ...)。 FROM子句始终由Object映射定义。

您拥有的选项

  • 介绍映射到视图的新 readonly 对象(或subselect而不是table)
  • 使用session.CreateSQLQuery()获取对底层结构化查询语言(SQL)的完全访问权限