NHibernate-Projections.Property(关于别名为的分离条件)
我正在构建一个半复杂的报表查询(可能不是最好的方法,但在本期之前它工作得很好) 正如您所看到的,它使用的是我实体的第一个实例,而不是每个特定分离条件的实体 很抱歉问了这么长的问题,我不太确定在没有所有代码的情况下如何解释这个问题 如果需要,我可以粘贴更多的代码/SQLNHibernate-Projections.Property(关于别名为的分离条件),nhibernate,nhibernate-projections,Nhibernate,Nhibernate Projections,我正在构建一个半复杂的报表查询(可能不是最好的方法,但在本期之前它工作得很好) 正如您所看到的,它使用的是我实体的第一个实例,而不是每个特定分离条件的实体 很抱歉问了这么长的问题,我不太确定在没有所有代码的情况下如何解释这个问题 如果需要,我可以粘贴更多的代码/SQL Paul我认为问题可能是您将子查询别名为“Sales”,但您已经在分离的条件中定义了别名“Sales”。Sql当然不区分大小写(我认为NHibernate别名不区分大小写?) 在任何情况下,我都会尝试更改投影列表中的别名,例如 v
Paul我认为问题可能是您将子查询别名为“Sales”,但您已经在分离的条件中定义了别名“Sales”。Sql当然不区分大小写(我认为NHibernate别名不区分大小写?) 在任何情况下,我都会尝试更改投影列表中的别名,例如
var projections = Projections.ProjectionList()
.Add(Projections.SubQuery(appts), "Appointments")
.Add(Projections.SubQuery(sales), "MySales");
这样您就不会有两个潜在冲突的别名。一点关于潜在客户、促销员、约会和销售的hbm信息可能会有所帮助。Crtieria查询已经过时(几乎)
// total appointments
var appts = DetachedCriteria.For<Appointment>("appt")
.CreateAlias("Lead", "lead")
.CreateAlias("lead.Promoter", "leadPromoter", JoinType.LeftOuterJoin)
.Add(Restrictions.EqProperty("leadPromoter.Id", "promoter.Id"))
.Add(Restrictions.Eq(
Projections.SqlFunction("day", NHibernateUtil.DateTime, Projections.Property("appt.AppointmentDate")), selectedDayOfWeek)
)
.SetProjection(Projections.ProjectionList()
.Add(Projections.CountDistinct("appt.Id"));
// total sales
var sales = DetachedCriteria.For<Appointment>("sales")
.CreateAlias("Lead", "lead")
.CreateAlias("Sale", "sale")
.CreateAlias("lead.Promoter", "leadPromoter", JoinType.LeftOuterJoin)
.Add(Restrictions.EqProperty("leadPromoter.Id", "promoter.Id"))
.Add(Restrictions.Eq(
Projections.SqlFunction("day", NHibernateUtil.DateTime, Projections.Property("sales.AppointmentDate")), selectedDayOfWeek)
)
.SetProjection(Projections.ProjectionList()
.Add(Projections.CountDistinct("sales.Id"));
and datepart(day, this_0_.AppointmentDate) = 0 /* @p4 */
and datepart(day, this_0_.AppointmentDate) = 0 /* @p5 */
and datepart(day, this_0_.AppointmentDate) = 0 /* @p6 */
and datepart(day, this_0_.AppointmentDate) = 0 /* @p7 */
and datepart(day, this_0_.AppointmentDate) = 0 /* @p8 */
and datepart(day, this_0_.AppointmentDate) = 0 /* @p9 */
and datepart(day, this_0_.AppointmentDate) = 0 /* @p10 */) as y0_,
var projections = Projections.ProjectionList()
.Add(Projections.SubQuery(appts), "Appointments")
.Add(Projections.SubQuery(sales), "MySales");