nHibernate存储过程调用

Nil*_*Pun 3 c# nhibernate stored-procedures

我对nHibernate ORM很新.有人可以帮我理解/解决我下面的情景吗?

我有调用的存储过程getSummaryReport,其预计@productID的参数.此存储过程连接多个表并提供摘要数据.

我需要使用nhibernate加载从上面的存储过程返回的数据.有人可以请帮助我通过nHibernate调用存储过程怎么样?

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

  1. 我需要映射xml吗?如果是的话,映射xml会发生什么,据我所知,每个属性应该有物理表.在上面的案例中,存储过程正在生成全新的对象.

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

再次感谢你.

Rip*_*ppo 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>
Run Code Online (Sandbox Code Playgroud)

然后使用SetResultTransformer ...

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

和YOURCLASS是: -

public class YOURCLASS 
{
    public virtual int ProductId { get; set; }
    public virtual string Column1Returned { get; set; }
    public virtual int Column2Returned { get; set; }
            etc..
}
Run Code Online (Sandbox Code Playgroud)

确保您的SP返回的内容是在YOURCLASS记住您的列名和属性名称必须与它们CASE敏感时完全匹配时定义的.