我们需要一点帮助,我们一直在努力解决这个问题,但它根本不起作用。基本上,我们有一个使用实体框架和 ADO.NET 混合的站点,我们这样做是因为某些选择根本不适用于我们使用发布结构获取数据的方式,并且使用实体框架进行某些保存是不可能的或采取分钟来保存选择和操作的数据量。
在请求开始时,我们有一个连接提供程序,它尝试管理连接,并为 ado.net 读取提供独立的 SqlConnection 或与 EF 和任何可能进行更新的 ado.net sprocs 一起使用的单个连接对象,我们然后可以调用提交事务范围的保存更改。
不幸的是,这根本行不通,我们希望避免升级到 MSDTC,但如果没有其他方法,我们将接受它。问题是我们应该在请求开始时创建一个 sqlconnection 并与所有内容共享它,还是应该为所有内容独立创建一个 SqlConnection 对象并使用事务范围并让它做它需要做的事情,即使我们升级到 MSDTC .
我们看到的一些错误是:
- Cannot promote the transaction to a distributed transaction because there is an active save point in this transaction.
- Cannot use SAVE TRANSACTION within a distributed transaction.
- The transaction has aborted.
- The operation is not valid for the state of the transaction.
我们也遇到了超时,我认为独立连接正在尝试从参与事务的表中进行选择,但使用不在事务内部的连接。
我会很感激这里的任何建议,因为我们尝试过的方法根本行不通。