Entity framework 如果数据库2使用实体框架失败,则回滚数据库1中的更改

Entity framework 如果数据库2使用实体框架失败,则回滚数据库1中的更改,entity-framework,unit-of-work,Entity Framework,Unit Of Work,我有一个需求,我需要在两个数据库中创建用户,我能够做到这一点,但是,考虑到在db1中成功创建用户的用例,并且由于一些服务器错误,用户没有在db2中创建。我应该如何处理这个用例。EF6提供事务,但是,这些是否仅限于Sp?我应该如何处理这种情况 下面是我在保存更改时使用的代码: public void SaveChanges() { using (var scope = new TransactionScope(TransactionScopeOption.R

我有一个需求,我需要在两个数据库中创建用户,我能够做到这一点,但是,考虑到在db1中成功创建用户的用例,并且由于一些服务器错误,用户没有在db2中创建。我应该如何处理这个用例。EF6提供事务,但是,这些是否仅限于Sp?我应该如何处理这种情况

下面是我在保存更改时使用的代码:

public void SaveChanges()
        {
            using (var scope = new TransactionScope(TransactionScopeOption.Required,
                                                    new TransactionOptions { IsolationLevel = IsolationLevel.ReadCommitted }))
            {
                ((IObjectContextAdapter)db1Context).ObjectContext.SaveChanges(SaveOptions.DetectChangesBeforeSave);
                ((IObjectContextAdapter)db2Context).ObjectContext.SaveChanges(SaveOptions.DetectChangesBeforeSave);

                scope.Complete();
                ((IObjectContextAdapter)db1Context).ObjectContext.AcceptAllChanges();
                ((IObjectContextAdapter)db2Context).ObjectContext.AcceptAllChanges();

            }
        }

我的答案是。。。不要


根据实际使用的数据库,您应该使用类似SQL Server的复制。这会让数据库担心如何保持每个实例的一致性,因此您不必这样做。

也许这会有所帮助:Thnx..将尝试一下