我有以下场景:
using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = IsolationLevel.ReadCommitted },EnterpriseServicesInteropOption.Automatic))
{
using (DataContext db = new DataContext())
{
db.Connection.Open();
db.Transaction = db.Connection.BeginTransaction();
try
{
bool outcome = InvokeInTransaction<string, object>(inputDict, out outputDict);
db.Transaction.Commit();
}
catch (Exception ex)
{
response.Outcome = BusinessEntityResponse.SystemError;
db.Transaction.Rollback();
}
}
}
Run Code Online (Sandbox Code Playgroud)
InvokeInTransaction调用内部是对LTS存储库进行的一些调用,以执行各种数据更改.问题是在存储库中还有另一个
using (var db = new DataContext())
Run Code Online (Sandbox Code Playgroud)
里面是持久性代码.检查存储库中的上下文显示Transaction = null,我怀疑"内部"上下文不知道Ambient事务.可以这样做吗?我知道EF管理这个,并且约束是无法更改存储库代码.有帮助吗?