在 NHibernate 中使用 Save/Delete/SaveOrUpdate 受影响的行

Posted

技术标签:

【中文标题】在 NHibernate 中使用 Save/Delete/SaveOrUpdate 受影响的行【英文标题】:Affected Rows with Save/Delete/SaveOrUpdate in NHibernate 【发布时间】:2012-09-11 11:48:23 【问题描述】:

我有一个使用 Nhibernate 的应用程序,并且我正在实现一个存储库模式。我想知道是否有任何方法可以获取受影响的行数并将其返回给存储库用户,就像我们在 Ado.Net Providers 中的ICommand.ExecuteNonQuery 一样。我的代码如下所示:

   public int Save(T entity) 
   
       session.Save(entity);
       return ???
   

   public int Delete(T entity) 
   
       session.Delete(entity);
       return ???
   

谢谢

【问题讨论】:

【参考方案1】:

在您的代码中,如果行数不是 1,NHibernate 将抛出异常(在上面的 2 种情况下 - 无论如何,当您刷新会话时),因此您可以从 Delete 和 Save 方法返回 1 - 当然这使得返回行数毫无意义。为什么要返回行数?如果要检查 NHibernate 是否正在做它应该做的事情(即更新 1 行或删除 1 行),我建议相信该工具来完成它的工作......

【讨论】:

以上是关于在 NHibernate 中使用 Save/Delete/SaveOrUpdate 受影响的行的主要内容,如果未能解决你的问题,请参考以下文章

在 Metro 中使用 NHibernate

如何使用 NHibernate 在 CompositeId 映射中设置列

如何在 NHibernate 中使用 sql 查询创建表?

在使用 NHibernate 进行持久性的项目中测试数据模型

在 nhibernate 中使用参数值打印查询字符串?

在 NHibernate 中使用字符串枚举 - GetValue 永远不会被解雇