如何设置NHibernate条件以执行此类查询?
如何设置NHibernate条件以执行此类查询如何设置NHibernate条件以执行此类查询?,nhibernate,Nhibernate,如何设置NHibernate条件以执行此类查询 SELECT COUNT(1) AS CNT, l.CAMPAIGN_ID AS CAMPAIGN_ID, MAX(mc.NAME) AS CAMPAIGN_NAME FROM SA_LEADS l INNER JOIN SA_CAMPAIGNS mc ON l.CAMPAIGN_ID = mc.ID GROUP BY CAMPAIGN_SOURCED_ID ORDER BY CN
SELECT
COUNT(1) AS CNT,
l.CAMPAIGN_ID AS CAMPAIGN_ID,
MAX(mc.NAME) AS CAMPAIGN_NAME
FROM
SA_LEADS l
INNER JOIN
SA_CAMPAIGNS mc
ON
l.CAMPAIGN_ID = mc.ID
GROUP BY
CAMPAIGN_SOURCED_ID
ORDER BY
CNT DESC
我有两个表的映射
SA_Lead
和SA_CAMPAIGNS
对于我来说,我将从我试图分组的元素开始,因此我将从
运动的基础。我无法从您的查询中判断,但我假设您的映射有一种从活动到销售线索的方式。我假设这被称为“销售线索列表”
我也喜欢创建一个小类来接收投影结果,这样可以创建一些东西来保存结果
public class CAMPAIGN_PERFORMANCE
{
public CAMPAIGN_PERFORMANCE() {}
public int CP_ID {get; set;}
public string CP_NAME {get; set;}
public int CP_NO_OF_SALES_LEADS {get; set;}
}
一旦你有了一些东西要把你的投影结果放进去,你就可以创建一个标准标准,然后通过投影把它推到你的新类中
ICriteria criteria = base.Session.CreateCriteria(typeof(SA_CAMPAIGNS));
criteria.CreateAlias("SALES_LEADS_LIST", "SA_LEADS", JoinType.InnerJoin);
criteria.SetProjection(Projections.ProjectionList()
.Add(Projections.Property("ID"), "CP_ID")
.Add(Projections.Property("CAMPAIGN_NAME"), "CP_NAME")
.Add(Projections.CountDistinct("SA_LEADS.ID"), "CP_NO_OF_SALES_LEADS")
.Add(Projections.GroupProperty("ID"));
.Add(Projections.GroupProperty("CAMPAIGN_NAME")));
IList<CAMPAIGN_PERFORMANCE> cpProjections = criteria
.SetResultTransformer(
new AliasToBeanResultTransformer(typeof(CAMPAIGN_PERFORMANCE)))
.List<CAMPAIGN_PERFORMANCE>();
ICriteria-criteria-criteria=base.Session.CreateCriteria(typeof(SA_活动));
criteria.CreateAlias(“销售线索列表”、“销售线索”、JoinType.InnerJoin);
criteria.SetProjection(Projections.ProjectionList()的标准)
.Add(Projections.Property(“ID”),“CP_ID”)
.Add(Projections.Property(“活动名称”),“CP名称”)
.Add(projects.CountDistinct(“SA_LEADS.ID”),“CP_NO_OF_SALES_LEADS”)
.Add(Projections.GroupProperty(“ID”));
.Add(Projections.GroupProperty(“活动名称”));
IList cpProjections=标准
.SETRESULT变压器(
新别名ToBeanResultTransformer(类型(活动性能)))
.List();