私はコントローラとリポジトリを持っています。 EF 6を使用して変更を保存した後のロールバック
コントローラファイル
int userID = _myrepository.addCustomer(model)
私が取得するユーザーID
その後、支払いをするためにサードパーティ製のプラグインを使用して(例:)
var success = makePaymentThroughPaymentProcessor(userID);
今すぐお支払いがあれば処理が進まない、またはエラーが発生したときに変更をロールバックして、データベースに追加されていない顧客が追加されないようにします。
私は
(var transaction = objMCOEntities.Database.BeginTransaction())
{
//code...
context.SaveChanges();
return userID;
私はhttps://msdn.microsoft.com/en-us/data/dn456843.aspx
の上に見えますが、私はaddCustomerリポジトリメソッドの後に呼び出されたトランザクションを参照するかどうかはわかりませんし、リポジトリメソッドをラップ使用して試してみました
私は最初に支払いをしてからdbに顧客を追加することができましたが、顧客をdbに追加するときにエラーが発生した場合、顧客は作成されずに支払いが行われ、その後お客様に返金する必要があります
なぜ顧客を追加して支払いが失敗した場合は削除するだけではありませんか? –
@ Dr.Stitch私はそれが一番簡単な方法かもしれないと思いますが、よりエレガントな方法があるかもしれません。 –
私はこれがどんなことよりもあなたを助けるだろうと思うhttp://www.codeguru.com/csharp/.net/net_data/sortinganditerating/article.php/c10993/SystemTransactions-Implement-Your-Own-Resource-Manager.htm# page-2 – KhawajaAtteeq