Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 具有多个DBContext的单作用域事务_C#_Entity Framework_Transactions_Rollback - Fatal编程技术网

C# 具有多个DBContext的单作用域事务

C# 具有多个DBContext的单作用域事务,c#,entity-framework,transactions,rollback,C#,Entity Framework,Transactions,Rollback,我在网上搜索了很多,没有找到类似的案例。我有一个TransactionScope和几个DbContext 只有在所有上下文成功保存更改的情况下,我才想将更改提交到数据库 但我面临的问题是,我必须调用代码>通用上下文。代码中的SaveCurvie在数据上发生的变化是在一段时间之前由通用上下文检索的,但是我注意到,在调用通用上下文之后,更改为 >提交> >。p> 我遇到了什么问题 我尝试了TransactionScopeOption.Required和TransactionScopeOption.

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

只有在所有上下文成功保存更改的情况下,我才想将更改提交到数据库

<>但我面临的问题是,我必须调用代码>通用上下文。代码中的SaveCurvie</代码>在数据上发生的变化是在一段时间之前由通用上下文检索的,但是我注意到,在调用<代码>通用上下文之后,更改为<强> >提交> <强> >。p> 我遇到了什么问题

我尝试了
TransactionScopeOption.Required
TransactionScopeOption.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();
    }
}

. 这与你的情况略有不同;指EF的旧版本;但它解释了一些事情。另请参见,谢谢@MickyD,但是到目前为止,如果有人能在这里指出问题的话,仍然无法工作。代码编写的方式是否有任何可能导致问题的缺陷?