如何为存储过程编写映射

Posted

技术标签:

【中文标题】如何为存储过程编写映射【英文标题】:How to write mappings for a stored procedure 【发布时间】:2011-12-01 18:28:02 【问题描述】:

这里有一篇关于如何映射存储过程调用的返回值的优秀文章: http://elegantcode.com/2008/11/23/populating-entities-from-stored-procedures-with-nhibernate/

本例中的映射是通过 hbm 文件完成的。

我正在尝试使用最新版本的 Nhibernate (3.2),我们可以在其中通过代码进行映射。我真的很想找出可以创建如下映射的 C# 代码:

<sql-query name="GetProductsByCategoryId">
    <return class="Product">
      <return-property column="ProductID" name="Id" />
      <return-property column="ProductName" name="Name" />
      <return-property column="SupplierID" name="Supplier" />
      <return-property column="CategoryID" name="Category" />
      <return-property column="QuantityPerUnit" name="QuantityPerUnit" />
      <return-property column="UnitPrice" name="UnitPrice" />
      <return-property column="UnitsInStock" name="UnitsInStock" />
      <return-property column="UnitsOnOrder" name="UnitsOnOrder" />
      <return-property column="ReorderLevel" name="ReorderLevel" />
      <return-property column="Discontinued" name="Discontinued" />
    </return>
    exec dbo.GetProductsByCategoryId :CategoryId
</sql-query>

【问题讨论】:

现在可见 ;)(您可以删除评论) @VishalKumar 您能否发布一个仅使用代码调用存储过程的示例? 【参考方案1】:

说实话我从来没有尝试过,你应该看看扩展方法AddNamedQuery(..):你从你调用它Configuration实例(NHibernate.Cfg命名空间))。

Some examples 在 NHibernate 测试项目中。

顺便说一句,您可以混合使用新的 3.2 代码映射和 xml 映射。 开始看this question;

【讨论】:

谢谢 Michele,我知道混淆部分。事实上,我就像上面一样使用了经典的 hbm 文件映射来使其工作到 3.2。但是 AddNamedQuery(..) 确实是我正在寻找的通过代码进行映射的方法。

以上是关于如何为存储过程编写映射的主要内容,如果未能解决你的问题,请参考以下文章

如何为用户(已经 dbo)授予存储过程的执行权限以运行 s-s-rS 报告

ORACLE中如何为存储过程传递参数?

如何为行中的多个集合计算存储过程中两个日期之间的差异

如何为每次执行将过程结果存储在 SQL Server 中的新(单个)文本文件中

如何为 H2 数据库用户定义函数和存储过程指定 java 类版本?

如何为DateTime类型赋Null值!!