0

これが私の問題です

formAとformBの2つのフォームがあり、formBはformAのダイアログとして機能します

で定義された formA の範囲内

EntityContext contextA = new EntityContext();

formA のどこかで、呼び出します

new formB().ShowDialog();

ShowDialog() を呼び出すと、

contextA.SaveChanges(); //<<<A>>>

で定義された formB クラス内

EntityContext contextB = new EntityContext();

どこかできっかけになった

{
bool transactionSucceed = false;
using(Transaction transaction = new Transaction())
{
  contextB_DataOperations(); 
  contextB.SaveChanges();
  transaction.complete();
  transactionSucceed = true;
}
if(transactionSucceed)
  contextB.AcceptAllChanges(); // <<<B>>>
}

formB は破棄可能です。破棄するときに呼び出します

contextB.Dispose();

問題が発生している場所は、 でのトランザクション操作データのコミットが予想されますが、<<<B>>>実際には でコミットされます<<<A>>>

4

1 に答える 1

1

こんにちはそれを行う簡単な方法は

      using (TransactionScope tx = new TransactionScope(TransactionScopeOption.RequiresNew))
{
    contextB_DataOperations(); 
    contextB.SaveChanges();
    contextB.AcceptAllChanges();
    TransactionScope .complete();

}

これがお役に立てば幸いです

于 2012-07-05T09:24:20.560 に答える