我对 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>();
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/