在您的情况下,是的,您可以保证每个 DbContext.SaveChanges() 将在单独的事务中运行。
术语“环境”事务是指在调用堆栈中启动的事务。所以这是一个每线程的概念。请参阅Transaction.Current和TransactionScope。这是一项允许您执行以下操作的功能:
using (TransactionScope scope123 = new TransactionScope())
{
using (SqlConnection connection1 = new SqlConnection(connectString1))
{
// Do some work
using (SqlConnection connection2 = new SqlConnection(connectString2))
{
// Do some more work
}
}
Run Code Online (Sandbox Code Playgroud)
上述两个连接都自动使用“环境”事务“scope123”。听起来实体框架现在知道如何做到这一点。但是 TransactionScope 不会跨线程,所以你没问题。而且听起来您无论如何都没有明确创建事务范围。