NHibernate:如何为模型调用存储过程和Single / Plural?

时间:2010-11-11 07:48:54

标签: c# nhibernate nhibernate-mapping

有人能告诉我使用NHibernate调用存储过程的最佳和推荐方法吗?

我设置了映射,目前我正在使用

 var list = session.CreateSQLQuery("exec usp_Test").AddEntity(typeof(Product)).List<Product>();

我确实得到了我的产品的LIST,但这是最好的方法吗?

也是Model类即。产品最好设置为单数或复数(产品)。

提前致谢

2 个答案:

答案 0 :(得分:1)

我建议尽可能避免使用NHibernate存储过程。

可能仍有使用存储过程的原因。是这样,有几种方法可以将它们与NHibernate一起使用。

直接将它们作为查询进行调用(如您所做),将它们指定为预定义查询,或者甚至可以将它们定义为NHibernate应如何选择,插入或更新实体的方式。

如何在映射文件中使用存储过程{。{3}}。

如何从代码中调用它们post from Ayende

关于您的代码:

  • AddEntity不会添加类型,而是添加实体实例。它实际上已转为主键。
  • 存储过程无法真正提供产品列表。只有NHibernate(ORM)能够从数据库中读取对象。当您调用存储过程时,您将直接转到数据库。

我不明白关于单数和复数的最后一句话。这是另一个问题吗?

答案 1 :(得分:0)

不是真的。通常,如果您使用的是nHibernate,则允许它为您生成查询。并不是说你正在做的事情有什么不妥,但你是通过这样做来欺骗自己的nHibernate的一些有用性。如果我是你,我会考虑通过使用标准对象来收集对象。