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,但是到目前为止,如果有人能在这里指出问题的话,仍然无法工作。代码编写的方式是否有任何可能导致问题的缺陷?