我的实体如下所示:
(1) 类(class)(详细) (2) 学生(详细) (3) StudentEnrolment(具有学生到类(class)的一对多映射)
现在我正在尝试创建一个投影类(称为 CourseSummary),其中包含类(class)的几个字段以及该类(class)的学生总数(称为 TotalEnrolments)。在下面的代码中,我也包括了类(class)的校园(尽管与我的问题无关)。
我已经到达这里:
var courseSummaries = session.CreateCriteria<Course>()
.CreateAlias("Campus", "cmp")
.SetProjection(Projections.ProjectionList()
.Add(Projections.Property("CourseId"), "CourseId")
.Add(Projections.Property("StartDate"), "StartDate")
.Add(Projections.Property("EndDate"), "EndDate")
.Add(Projections.Property("cmp.CampusId"), "CampusId")
//What here for "TotalEnrolments"?
).SetResultTransformer(Transformers.AliasToBean<Course>())
.List<Course>();
但是我该如何加入 StudentEnrolment 类并从中获取相关记录的总数呢?
我是 NHibernate 世界的新手,因此我的问题可能非常初步。
谢谢
最佳答案
var courseSummaries = session.CreateCriteria<Course>("c")
.CreateAlias("Campus", "cmp")
.SetProjection(Projections.ProjectionList()
.Add(Projections.Property("CourseId"), "CourseId")
.Add(Projections.Property("StartDate"), "StartDate")
.Add(Projections.Property("EndDate"), "EndDate")
.Add(Projections.Property("cmp.CampusId"), "CampusId")
.Add(Projections.Subquery(DetachedCriteria.For<Student>()
.Add(Restriction.Eq("Course.Id", "c.Id"))
.SetProjections(Projections.RowCount()), "TotalStudents")
)
.SetResultTransformer(Transformers.AliasToBean<CourseSummary>())
.List<CourseSummary>();
关于NHibernate 标准和预测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14309864/