【发布时间】:2014-06-17 22:55:15
【问题描述】:
我找到的所有使用 AliasToBean 转换器的示例都使用会话 CreateSqlQuery 方法而不是 CreateQuery 方法。它们也只返回基本值类型,而不是现有映射类型的任何对象。
我希望我的 DTO 有可能具有我的映射域对象之一的属性,如下所示,但我没有得到牵引力。我得到以下异常:
在类“namespace.DtoClass”中找不到属性“0”的设置器
我的选择在我的映射类上如下所示(我已确认映射正确提取):
SELECT
fcs.MeasurementPoint,
fcs.Form,
fcs.MeasurementPoint.IsUnscheduled as ""IsVisitUnscheduled"",
fcs.MultipleEntryAllowed
FROM FormCollectionSchedule fcs
我的最终查询会更复杂,但我想确认此 AliasToBean 方法是否可以返回映射的域对象以及通过 sql 检索的表中的基本字段值。
查询执行如下所示:
var result = session.CreateQuery(hqlQuery.ToString())
.SetResultTransformer(NHibernate.Transform.Transformers.AliasToBean(typeof (VisitFormCollectionResult)))
.List<VisitFormCollectionResult>();
注意:VisitFormCollectionResult DTO 有更多属性,但我想知道是否可以填充与名称匹配的域对象属性
更新发现了我的问题!我必须明确地为每个字段设置别名。一旦我添加了一个别名,即使类上的成员属性与我的 DTO 的属性名称匹配,对象的水合也能正常工作。
【问题讨论】:
-
你能发布一些代码吗? DTO、Nhibernate 查询等。
标签: nhibernate