【发布时间】:2014-07-23 12:47:36
【问题描述】:
我正在对一些使用 NHibernate 的代码进行一些维护,因为我对 NHibernate 几乎一无所知...
我有以下问题
var query = string.Format(@"select s.Id, s.Iccid, c.Name as Carrier, aa.StartDate as AssignmentDate, cust.Name as AssignedCustomerName
from assetassignment aa
left join SIM s on aa.AssetId = s.Id
left join Carrier c on s.CarrierId = c.Id
left join customer cust on aa.CustomerId = cust.Id
where aa.enddate is null
and aa.CustomerId in ({0})
and s.dateremoved is null",
string.Join(",",idsToInclude));
if (!string.IsNullOrWhiteSpace(carrier))
{
query += " and c.Name = '" + carrier + "'";
}
var results = _session.CreateSQLQuery(query)
.SetResultTransformer(new AliasToBeanResultTransformer(typeof(HomepageSIMTableRow)))
.List<HomepageSIMTableRow>();
return results;
这对我来说很好用(这意味着我不必摸索 NHibernate 就可以运行一些我可以解决的问题,但现在我需要添加分页,它只是感觉很臭。
任何关于如何将其移动到 NHibernate 领域并添加分页的指导都很棒!
【问题讨论】:
-
呃,我可能遗漏了一些东西,但这是 SQL 而不是 HQL...您是否以某种方式将 SQL 直接传递给命名查询?
-
对不起,扩展了我的例子。我通常使用 EF,所以为了证明这个功能和客户反馈,我只是直接通过 NHibernate 传递 sql。这些数据集很大,我的第一次 queryover
尝试是 'select n+1'-tastic -
来自英孚,花一些时间在 NH - 相比之下,它很棒! :)
标签: nhibernate