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 回答