NHibernate条件:"from"子句之后的子查询



如何使用标准编写以下 SQL:

select b.Name as Batch, b.Capacity as Capecity, 
       a.tStudent as Admit, (b.Capacity-a.tStudent) as Availabe 
from ( 
 SELECT count(Id) as tStudent, BatchId FROM [dbo].[Student] group by BatchId) as a 
left join [dbo].[Batch] as b on a.BatchId = b.Id 

要使用 NHibernate,生成如下查询:

SELECT ... 
FROM 
( 
 SELECT ...
) AS a 
..

我们必须选择:

  1. 将子选择映射为实体。
  2. 创建原始 SQL 查询

第一个选项意味着创建一些view,并将其映射为实体。如果我们不喜欢视图(或无法创建它),我们可以使用 NHibernate 映射的强大功能,元素<subselect>

<class name="MyEntity"... >
   <subselect>
    SELECT ...
    FROM ...
   </subselect>
   ...

第二个选项是关于使用NHibernate API创建本机/原始SQL:

session.CreateSQLQuery("SELECT ")

它不会从映射中获利,但我们仍然可以应用参数,并从转换中获利......

9.3.5. 原生 SQL 中的查询

相关内容

  • 没有找到相关文章