Nhibernate 具有已知类型的AliasToBean DTO

Nhibernate 具有已知类型的AliasToBean DTO,nhibernate,Nhibernate,我发现的所有使用AliasToBean transformer的示例都使用sessions CreateSqlQuery方法,而不是CreateQuery方法。它们还仅返回基本值类型,而不返回现有映射类型的任何对象 我希望我的DTO有可能拥有一个映射域对象的属性,如下所示,但我没有得到关注。我得到以下例外情况: 在类“namespace.DtoClass”中找不到属性“0”的setter 在映射类上,我的select如下所示(我已确认映射正确): 我的最终查询将更加复杂,但我想确认这个Alias

我发现的所有使用AliasToBean transformer的示例都使用sessions CreateSqlQuery方法,而不是CreateQuery方法。它们还仅返回基本值类型,而不返回现有映射类型的任何对象

我希望我的DTO有可能拥有一个映射域对象的属性,如下所示,但我没有得到关注。我得到以下例外情况:

在类“namespace.DtoClass”中找不到属性“0”的setter

在映射类上,我的select如下所示(我已确认映射正确):

我的最终查询将更加复杂,但我想确认这个AliasToBean方法是否可以从通过sql检索的表中返回映射的域对象以及基本字段值

查询执行如下所示:

var result = session.CreateQuery(hqlQuery.ToString())
                .SetResultTransformer(NHibernate.Transform.Transformers.AliasToBean(typeof (VisitFormCollectionResult)))
                .List<VisitFormCollectionResult>();
var result=session.CreateQuery(hqlQuery.ToString())
.SetResultTransformer(NHibernate.Transform.Transformers.AliasToBean(typeof(VisitFormCollectionResult)))
.List();
注意:VisitFormCollectionResult DTO有更多属性,但我想知道是否可以填充与名称匹配的域对象属性


更新发现我的问题!我必须明确地为每个字段指定别名。一旦我添加了别名,即使类上的成员属性与我的DTO的属性名称匹配,对象的水合作用也正常工作。

我自己的问题的答案是select中的每个单独字段都需要一个与属性匹配的显式别名,无论字段名是否已与DTO对象的属性名匹配:

SELECT 
fcs.MeasurementPoint as "MeasurementPoint", 
fcs.Form as "Form", 
fcs.MeasurementPoint.IsUnscheduled as "IsVisitUnscheduled", 
fcs.MultipleEntryAllowed as "MultipleEntryAllowed"
FROM FormCollectionSchedule fcs

你能发一些代码吗?DTO、Nhibernate查询等。。
SELECT 
fcs.MeasurementPoint as "MeasurementPoint", 
fcs.Form as "Form", 
fcs.MeasurementPoint.IsUnscheduled as "IsVisitUnscheduled", 
fcs.MultipleEntryAllowed as "MultipleEntryAllowed"
FROM FormCollectionSchedule fcs