【发布时间】:2011-04-07 05:05:01
【问题描述】:
我有一个从多个表返回数据的存储过程。在 nhibernate 中,我们为每个表创建类。是否需要为它返回的每个表创建类,然后将该类相互关联。 还有其他方法吗 就像创建一个包含存储过程返回的所有字段的类
谢谢
【问题讨论】:
标签: nhibernate
我有一个从多个表返回数据的存储过程。在 nhibernate 中,我们为每个表创建类。是否需要为它返回的每个表创建类,然后将该类相互关联。 还有其他方法吗 就像创建一个包含存储过程返回的所有字段的类
谢谢
【问题讨论】:
标签: nhibernate
这很容易实现。 在您的映射中添加以下内容:-
<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 列。这些必须与您的类名完美匹配。
【讨论】:
我没有使用过存储过程,但您绝对可以创建一个映射到视图而不仅仅是表的类。
顺便说一句,如果你使用的是QueryOver,你可以使用Select方法返回自定义对象:http://nhforge.org/blogs/nhibernate/archive/2009/12/17/queryover-in-nh-3-0.aspx#Projections
【讨论】: