3

我对 nHibernate ORM 很陌生。有人可以帮我理解/解决我下面的场景吗?

我有一个称为参数的存储getSummaryReport过程@productID。此存储过程连接多个表并提供汇总数据。

我需要使用 nhibernate 加载从上述存储过程返回的数据。有人可以帮我如何通过 nHibernate 调用存储过程吗?

现在我脑海中的一些问题是:

  1. 我需要映射xml吗?如果是的话,据我所知,映射 xml 应该有每个属性的物理表。在上述情况下,存储过程正在生成全新的对象。

  2. 如何从 C# 中调用上述存储过程?

再次感谢你。

4

1 回答 1

5

试试这个,你的映射: -

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
  <sql-query name="SummaryReport">
    exec getSummaryReport  :productId
  </sql-query>
</hibernate-mapping>

然后使用 SetResultTransformer...

var results = Session
      .GetNamedQuery("SummaryReport")
      .SetInt32("productId", productId);
      .SetResultTransformer(new AliasToBeanResultTransformer(typeof(YOURCLASS)));
return results.List<YOURCLASS>();

你的班级是:-

public class YOURCLASS 
{
    public virtual int ProductId { get; set; }
    public virtual string Column1Returned { get; set; }
    public virtual int Column2Returned { get; set; }
            etc..
}

确保从您的 SP 返回的内容定义为YOURCLASS记住您的列名和属性名必须完全匹配,因为它们是CASE敏感的。

于 2012-04-10T06:37:10.447 回答