我在互联网上搜索了很多,没有找到类似的案例。我有一个TransactionScope
有几个DbContext
。
我希望仅在所有上下文成功保存更改的情况下提交对数据库的更改。
但是我面临的问题是我必须在代码中间调用generalContext.SaveChanges
,因为更早发生在一般文字上的数据发生了变化,但我注意到这些变化是<在致电generalContext.SaveChanges()
后强烈>立即投入。
我遇到了什么问题?
我已尝试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();
}
}