gpt4 book ai didi

c# - Entity Framework 环境事务

转载 作者:行者123 更新时间:2023-11-30 22:04:41 24 4
gpt4 key购买 nike

我读到过,当 DbContext.SaveChanges() 运行时,所有操作都会自动包装在幕后的事务中。也就是说,如果 SaveChanges() 期间的任何操作失败,所有内容都会回滚以保持一致的状态。

但是,我多次遇到的一个术语是,更改可以作为环境事务的一部分运行。这到底是什么意思?

我特别关心的是:我有一个多线程应用程序,其中每个操作都有一个上下文。我的 DbContext 对象都不在不同线程之间共享。我是否保证每个 DbContext.SaveChanges() 的操作将在单独的事务中运行?

最佳答案

在您的情况下,是的,您保证每个 DbContext.SaveChanges() 将在单独的事务中运行。

术语“环境”事务是指在调用堆栈中更高层启动的事务。所以这是一个每线程的概念。参见 Transaction.CurrentTransactionScope .这是一项允许您执行以下操作的功能:

using (TransactionScope scope123 = new TransactionScope())
{
using (SqlConnection connection1 = new SqlConnection(connectString1))
{
// Do some work
using (SqlConnection connection2 = new SqlConnection(connectString2))
{
// Do some more work
}
}

上述两个连接都自动使用“环境”事务“scope123”。听起来 Entity Framework 现在知道该怎么做了。但是 TransactionScope 不会跨线程,所以你没问题。而且这听起来不像是在显式创建事务范围。

关于c# - Entity Framework 环境事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25001813/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com