NHibernate:Session.Save和Transaction.Commit

NHibernate:Session.Save和Transaction.Commit,nhibernate,Nhibernate,Session.Save和Transaction.Commit之间有区别吗 我什么时候应该用哪个 似乎有时Session.Save必须与事务一起使用。Commit,有时是no。有人知道为什么会这样吗?它们是不同的--Session.Save保存对象和Transaction.Commit提交大量工作(多次获取、加载、保存、更新等) 你会想两者都用。这里有一个快速的解释和链接,以供更多阅读。NHibernate文件说明如下: 在ISession中,每个数据库操作都发生在事务内部 它隔离了数据库操作(

Session.Save
Transaction.Commit
之间有区别吗

我什么时候应该用哪个

似乎有时
Session.Save
必须与
事务一起使用。Commit
,有时是no。有人知道为什么会这样吗?

它们是不同的--
Session.Save
保存对象和
Transaction.Commit
提交大量工作(多次获取、加载、保存、更新等)

你会想两者都用。这里有一个快速的解释和链接,以供更多阅读。NHibernate文件说明如下:

ISession
中,每个数据库操作都发生在事务内部 它隔离了数据库操作(甚至是只读操作)

如果没有显式定义事务,则每次从数据库读写时都会隐式创建一个事务。效率不高。因此,即使您只是在阅读,您也会希望将所有内容都放在事务中,并在完成时提交事务。Ayende Rahien在文章中进一步解释


当您查看一些代码示例时,可能看起来人们没有使用事务,但他们可能只是在您正在查看的代码之外开始/提交事务。例如,在我的ASP.Net MVC应用程序中,我使用操作筛选器(TransactionAttribute)来处理控制器操作之外的事务。

Transmission.Commit或transaction.Commit?TransactionAttribute建议的解释很好:+1