我有几个不返回域对象的存储过程(即;在 hbm 文件中具有相应 sql 表映射的对象);但改为返回自定义对象。
我想使用 NHibernate 调用这些存储过程并用输出自动填充我的自定义对象,而不是像使用 SqlDataReader 那样手动填充它们。
一个例子将受到高度赞赏。
顺便说一句:我通过代码使用 nhibernate 3.2 新功能映射。
我有几个不返回域对象的存储过程(即;在 hbm 文件中具有相应 sql 表映射的对象);但改为返回自定义对象。
我想使用 NHibernate 调用这些存储过程并用输出自动填充我的自定义对象,而不是像使用 SqlDataReader 那样手动填充它们。
一个例子将受到高度赞赏。
顺便说一句:我通过代码使用 nhibernate 3.2 新功能映射。
也许您可以尝试以下方法(取自https://stackoverflow.com/a/10513319/1236044)
它使用 CreateSQLQuery。您可以尝试select...
用Exec MyStoredProc
关键是让您的选择或存储过程返回与您尝试填充的 DTO 的属性同名的列。
public class YourDto
{
public int YourDtoId { get; set; }
public string YourDtoTitle { get; set; }
}
then
var result = yourNhSession
.CreateSQLQuery("select yourColumn1 as YourDtoId, yourColumn2 as YourDtoTitle from YOUR_TABLE")
.SetResultTransformer(Transformers.AliasToBean<YourDto>())
.List<YourDto>();