0
已經使用NHibernate很長時間了,我現在正在學習實體框架。在NHibernate中,對於每個ISession實例,我使用ISession.BeginTransaction實例化單個數據庫事務。在實體框架中,我將如何實現每個上下文一次事務的相同效果?實體框架與NHibernate交易
已經使用NHibernate很長時間了,我現在正在學習實體框架。在NHibernate中,對於每個ISession實例,我使用ISession.BeginTransaction實例化單個數據庫事務。在實體框架中,我將如何實現每個上下文一次事務的相同效果?實體框架與NHibernate交易
ISession並不嚴格對應於nHibernate中的數據庫事務,但它確實具有內置的隱式事務,您可以在此處看到更多:NHProf about implicit transactions。
在實體框架,當你調用的SaveChanges交易開始隱式的,你可以閱讀更多關於在this article on msdn
要在實體框架您使用的TransactionScope的BeginTransaction或在EntityConnection明確的事務。
最簡單的方法是使用TransactionScope的是這樣的:
using (TransactionScope tran = new TransactionScope()){
context.SaveChanges();
//Do more work with this or another context
context.SaveChanges();
tran.Complete();
//Or alternatively don't call Complete and because of the using block Dispose on tran will be
//called causing an Rollback
}
我檢查了我的代碼,你說得對NHibernate的,所以我澄清我的問題。請提供一些關於EF的示例代碼。 – HappyNomad 2012-02-08 09:28:27
我修改了我的答案,以包含使用TransactionScope的示例 – jakobandersen 2012-02-08 19:28:08