具有多个DbContexts的单个ScopeTransaction

时间:2017-01-22 12:20:01

标签: c# entity-framework transactions rollback

我在互联网上搜索了很多,没有找到类似的案例。我有一个TransactionScope有几个DbContext

我希望仅在所有上下文成功保存更改的情况下提交对数据库的更改。

但是我面临的问题是我必须在代码中间调用generalContext.SaveChanges,因为更早发生在一般文字上的数据发生了变化,但我注意到这些变化是<在致电generalContext.SaveChanges()后强烈>立即投入

我遇到了什么问题?

我已尝试TransactionScopeOption.RequiredTransactionScopeOption.RequiresNew,但无法解决问题

var transactionOptions = new TransactionOptions();
transactionOptions.Timeout = TimeSpan.FromMinutes(30);
using (var scope = new TransactionScope(TransactionScopeOption.Required, transactionOptions))
using (var generalContext = new CoreEntities())
{
    try
    {

        using (var subContext = new CoreEntities())
        {
            // the problem is here, that the changes are committed!!!
            generalContext.SaveChanges();


            subContext.SaveChanges();
        }
        scope.Complete();
    }
    catch
    {
        scope.Dispose();
    }
}

0 个答案:

没有答案