gpt4 book ai didi

c# - ADO Entity Framework 是否支持非 DTC 事务?一个 EntityContext 和一个 TransactionScope 中的多个查询导致 DTC 提升

转载 作者:行者123 更新时间:2023-11-30 13:29:14 24 4
gpt4 key购买 nike

我有一个使用 Entity Framework 的 Web 应用程序 - 我们使用 TransactionScope 类来提供环境事务。

有什么方法可以告诉 EF 优先使用标准 T-SQL 事务而不是 DTC 事务?我们经常对一个 EntityContext 和一个 TransactionScope 实例中的不同表进行大量查询,但这似乎总是将事务提升到 DTC

我把一个简短的例子放在一起,见下文。对单个表的查询正确地启动了一个 T-SQL 事务并且在连接 SPID 54 上然后查询 ContactUs 表,EF 在不同的连接 (SPID 53) 上执行此操作,这具有将事务提升为 DTC 事务的链式 react 。**

using (MyEntities DB = new MyEntities())
{
using (TransactionScope t = new TransactionScope())
{
DB.Individual.First().EmailAddress = "bob" + DateTime.Now.Second.ToString() + "@bob.com"; // done on connection 54
DB.ContactUs.First(); // done on connection 53 thus promoting the transaction!!
DB.SaveChanges();
t.Complete();
}
}

最佳答案

  1. 在连接字符串上设置 Enlist=false 以避免在事务中自动登记。

  2. 手动将连接登记为事务范围内的参与者。 (http://msdn.microsoft.com/en-us/library/ms172153%28v=VS.80%29.aspx)

关于c# - ADO Entity Framework 是否支持非 DTC 事务?一个 EntityContext 和一个 TransactionScope 中的多个查询导致 DTC 提升,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2026626/

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