2012-02-08 70 views
0

已經使用NHibernate很長時間了,我現在正在學習實體框架。在NHibernate中,對於每個ISession實例,我使用ISession.BeginTransaction實例化單個數據庫事務。在實體框架中,我將如何實現每個上下文一次事務的相同效果?實體框架與NHibernate交易

回答

0

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 
} 
+0

我檢查了我的代碼,你說得對NHibernate的,所以我澄清我的問題。請提供一些關於EF的示例代碼。 – HappyNomad 2012-02-08 09:28:27

+0

我修改了我的答案,以包含使用TransactionScope的示例 – jakobandersen 2012-02-08 19:28:08