为存储过程创建类,从多个表返回数据

时间:2011-04-07 05:05:02

标签: nhibernate

我有一个存储过程从多个表返回数据。在nhibernate中,我们为每个表创建类。是否需要为它返回的每个表创建类,然后将该类相互关联。 有没有其他方法可以做到这一点 比如创建一个包含存储过程返回的所有字段的类

感谢

2 个答案:

答案 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