2

asp.net Web フォームで新しいアプリケーションを開発する予定です。Entity Frameworkを使用しています(POCOクラスアプローチを使用)。

プレゼンテーション層、ビジネスロジック層、データアクセス層があります。私の質問は、ページで何らかのトランザクション作業を行いたい場合、顧客にデータを追加したり、顧客に関係のない他のデータを追加したり、電子メールを送信したりすることを意味する場合、単一のトランザクションでそれを行うにはどうすればよいかということです。

Web ページのコード ビハインドでトランザクションを開始する必要がありますか? または、これらのすべてのデータを BLL の顧客メソッドに渡すと、これらすべてがトランザクション方式で行われますか? どちらの方法でも、コードは疎結合されません。

操作にさまざまなエンティティが関与している場合に、トランザクション作業を実行するためのベスト プラクティスを教えてもらえますか?

4

1 に答える 1

2

説明

SaveChanges内部で Transaction を使用しますが、複数のSaveChanges呼び出しを実行する場合はTransactionScope. 呼び出されない場合scope.Complete()(例外が発生した場合)、トランザクションはロールバックされます。

サンプル

using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required))
{
     // add something to your context
     myDbContext.Add(...);
     // save changes
     myDbContext.SaveChanges();
     // commit changes 
     scope.Complete(); 
}

詳しくは

于 2012-05-16T07:34:33.933 に答える