2012-02-08 10 views
0

かなり長い間NHibernateを使用していましたが、今はEntity Frameworkを学習しています。 NHibernateでは、それぞれのISessionインスタンスに対して、私はISession.BeginTransactionを使用して単一のデータベーストランザクションをインスタンス化しました。 Entity Frameworkでは、コンテキストごとに1つのトランザクションでどのように同じ効果を達成できますか?Entity FrameworkとNHibernateのトランザクション

答えて

0

ISessionはnHibernateのデータベーストランザクションに厳密には対応していませんが、暗黙的なトランザクションが組み込まれています。詳細はNHProf about implicit transactionsを参照してください。あなたはSaveChangesメソッドを呼び出すときに、トランザクションが暗黙的に開始されたEntity Frameworkのでは

は、あなたがEntityConnection上のTransactionScopeかでBeginTransactionを使用するエンティティフレームワークに明示的なトランザクションを持っているためにthis article on msdn

にそれについての詳細を読むことができます。

最も簡単な方法は、このようの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

+0

私は自分の答えを変更して、TransactionScope – jakobandersen

関連する問題