Nhibernate 如何在QueryOver中使用SQL Count()
我正在尝试使用NHibernate中的QueryOver执行一些简单的SQL(使用SQLServer2005)。查询是计算序列号在项目列表中重复使用的次数,然后选择仅使用1次的序列号。请注意,我不希望使用不同的序列号,因为我不希望使用大于1的序列号 执行此操作的SQL查询是:Nhibernate 如何在QueryOver中使用SQL Count(),nhibernate,queryover,Nhibernate,Queryover,我正在尝试使用NHibernate中的QueryOver执行一些简单的SQL(使用SQLServer2005)。查询是计算序列号在项目列表中重复使用的次数,然后选择仅使用1次的序列号。请注意,我不希望使用不同的序列号,因为我不希望使用大于1的序列号 执行此操作的SQL查询是: SELECT SERNUM, expr1 FROM (SELECT SERNUM, COUNT(SERNUM) AS expr1 FROM ITEM GROUP BY SERNUM) AS deri
SELECT SERNUM, expr1
FROM (SELECT SERNUM, COUNT(SERNUM) AS expr1
FROM ITEM
GROUP BY SERNUM) AS derivedtbl_1
WHERE (expr1 = 1)
到目前为止,我使用QueryOver所做的是:
var query = session.QueryOver<Item>()
.Select(Projections.ProjectionList()
.Add(Projections.Count<Item>(x => x.Sernum))
.Add(Projections.GroupProperty("Sernum"))).List();
我不确定我是否以正确的方式处理这个问题,但希望有人能指点我
var serials = session.QueryOver<Item>()
.Where(Restrictions.Eq(Projections.Count<Item>(i => i.Id), 1));
.Select(Projections.GroupProperty<Item>(i => i.Sernum))
.List();
要获取项目,请执行以下操作
SELECT SERNUM FROM ITEM GROUP BY SERNUM HAVING COUNT(*) = 1
var subquery = QueryOver.Of<Item>()
.Where(Restrictions.Eq(Projections.Count<Item>(i => i.Id), 1));
.Select(Projections.GroupProperty<Item>(i => i.Sernum));
var items = QueryOver.Of<Item>()
.WithSubquery.Where(i => i.Sernum).In(subquery);
.List();
var subquery=QueryOver.Of()
.式中(限制.Eq(投影.Count(i=>i.Id),1));
.Select(projects.GroupProperty(i=>i.Sernum));
var items=QueryOver.Of()
其中(i=>i.Sernum).In(子查询);
.List();
.Add(Projections.Count(x=>x.Sernum).As(“Count”))谢谢你的帮助,除了我想要的一些调整之外。
var subquery = QueryOver.Of<Item>()
.Where(Restrictions.Eq(Projections.Count<Item>(i => i.Id), 1));
.Select(Projections.GroupProperty<Item>(i => i.Sernum));
var items = QueryOver.Of<Item>()
.WithSubquery.Where(i => i.Sernum).In(subquery);
.List();