c# - nHibernate 存储过程调用

标签 c# nhibernate stored-procedures

我对 nHibernate ORM 很陌生。有人可以帮助我理解/解决我在下面遇到的情况吗?

我有一个名为 getSummaryReport 的存储过程,它需要 @productID 作为参数。此存储过程连接多个表并提供汇总数据。

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

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

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

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

再次感谢。

最佳答案

试试这个,你的映射:-

<?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>();

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敏感。

关于c# - nHibernate 存储过程调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10083239/

相关文章:

.net - Linq-to-Sql中的顺序GUID?

nhibernate - 如何在查询中跳过二级缓存?

c# - 如何映射到 NHibernate 中的 SortedList

mysql - 从分层数据中获取有限数量的记录

c# - 禁止用户打开开始菜单

c# - 使用 C# Clipper 进行偏移时出现尖峰

c# - 服务结构: Calls between services are delayed?

MySQL 触发器以防止输入重复记录

sql - MySQL 存储过程 - 返回数据的 IF/ELSE

c# - 如何通过反射调用基类的方法?