n休眠存储过程调用
本文关键字:调用 存储过程 休眠 | 更新日期: 2023-09-27 18:30:46
我对nHibernate ORM很陌生。有人可以帮助我理解/解决我在下面的情况吗?
我有一个名为 getSummaryReport
的存储过程,它期望@productID
作为参数。此存储过程联接多个表并提供摘要数据。
我需要使用 nhibernate 加载从上述存储过程返回的数据。有人可以帮我如何通过 nHibernate 调用存储过程吗?
我现在脑海中闪过的一些问题是:
-
我需要映射 xml 吗?如果是,据我了解,映射xml会发生什么,每个属性都应该有物理表。在上面的情况下,存储过程正在生成全新的对象。
-
如何从 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>();
而你的班级是:-
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
敏感。