小编典典

NHibernate条件:“ From”子句后的子查询

sql

如何使用Criteria编写以下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

阅读 226

收藏
2021-04-14

共1个答案

小编典典

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

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

我们必须选择:

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

第一种选择是创建一些view,并将其映射为一个实体。如果我们不喜欢视图(或无法创建视图),则可以使用NHibernate映射元素element的功能
<subselect>

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

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

session.CreateSQLQuery("SELECT ")

它没有从映射中获利,但是我们仍然可以应用参数,并从转换中获利…

9.3.5。本机SQL中的查询

2021-04-14