我有一个存储过程从多个表返回数据。在nhibernate中,我们为每个表创建类。是否需要为它返回的每个表创建类,然后将该类相互关联。 有没有其他方法可以做到这一点 比如创建一个包含存储过程返回的所有字段的类
感谢
答案 0 :(得分:2)
这很容易实现。 在你的映射中添加: -
<sql-query name="GetItemDTO">
<![CDATA[exec uspGetSomeResults :id]]>
</sql-query>
创建一个类: -
public class ItemDTO
{
public virtual long Id { get; protected set; }
public virtual string Name { get; protected set; }
}
并检索结果
return Session
.GetNamedQuery("GetItemDTO")
.SetInt64("id", 123456)
.SetResultTransformer(new AliasToBeanResultTransformer(typeof(ItemDTO)))
.List<ItemDTO>();
这假定SP返回Id和Name列。这些必须与您的班级名称完全匹配。
答案 1 :(得分:0)
我还没有使用存储过程,但你绝对可以创建一个映射到视图而不仅仅是表格的类。
顺便说一句,如果您使用的是QueryOver,则可以使用Select
方法返回自定义对象:http://nhforge.org/blogs/nhibernate/archive/2009/12/17/queryover-in-nh-3-0.aspx#Projections