我有几个不返回域对象的存储过程(即在hbm文件中具有相应sql表映射的对象);但改为返回自定义对象。
我想使用NHibernate调用这些存储过程并自动填充我的自定义对象,而不是像我使用SqlDataReader那样手动填充它们。
应高度赞赏一个例子。
BTW:我使用nhibernate 3.2新功能按代码映射。
答案 0 :(得分:5)
也许您可以尝试以下内容(取自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>();