【发布时间】:2011-08-08 23:24:49
【问题描述】:
由于 SQL Server 的 SavePoints 功能 (SqlTransaction.Save()),我想以非常有限的方式使用 SqlTransactions(我真的需要这个功能),同时在所有其他地方仍然使用环境事务。我意识到这意味着这段代码(和依赖项)现在是特定于 SQL Server 的——这很好。但是,出于最佳实践目的,我仍然更喜欢在所有其他地方遵循首选的环境事务。 (如果我们需要迁移到 Oracle 或其他东西,那么我们需要重新编写这部分代码,但不想重新编写整个代码库。)
是否可以从Transaction.Current(返回System.Transactions.Transaction 类型的对象)或其他方式获取当前的SqlTransaction? (我可能错了,但我猜这最终是在运行时实现环境Transaction 对象的对象)
(related but different question I'm currently working on if you need more info on why)
【问题讨论】:
-
我的研究表明,每个人都说我不应该混合这些,然后给出哲学原因(更难维护等)。据我所知,我不应该混合这些没有技术原因。如果有人可以提供,那也可以回答这个问题。
标签: .net sql-server .net-4.0 transactions sql-server-2008-r2