3

私はSaveChanges()以下の方法を使用しています:

objAdbContextデータベースのA

objBdbContextデータベースのB

以下に示すようにDB Aのテーブルを更新します

public string SaveA()
{

//Some stuff

  objAdbContext.SaveChanges();

  string result=UpdateDatabaseB(some parameters)

  //Some stuff

}


public string UpdateDatabaseB(some parameters)

{

  //Some stuff

   objBdbContext.SaveChanges();

  return "Success";

}

この場合、データベース B は更新されていません。複数のデータベースを更新する正しい方法ですか?

どちらも独立したデータベースであり、この場合 TransactionScope を実装する方法は?

4

1 に答える 1

6

これを試して:

using (TransactionScope scope = new TransactionScope())
{
    // Save changes but maintain context1 current state.
    context1.SaveChanges(SaveOptions.DetectChangesBeforeSave);

    // Save changes but maintain context2 current state.
    context2.SaveChanges(SaveOptions.DetectChangesBeforeSave);

    // Commit succeeded since we got here, then completes the transaction.
    scope.Complete();

    // Now it is safe to update context state.
    context1.AcceptAllChanges();
    context2.AcceptAllChanges();
}

このサンプルは、次のブログ投稿から取得されました。

Entity Framework 4 によるトランザクションの管理

于 2012-12-14T09:07:46.487 に答える