1

我有几个不返回域对象的存储过程(即;在 hbm 文件中具有相应 sql 表映射的对象);但改为返回自定义对象。

我想使用 NHibernate 调用这些存储过程并用输出自动填充我的自定义对象,而不是像使用 SqlDataReader 那样手动填充它们。

一个例子将受到高度赞赏。

顺便说一句:我通过代码使用 nhibernate 3.2 新功能映射。

4

1 回答 1

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>();
于 2013-02-07T12:55:11.293 回答