无论如何在连接字符串中查找是否在任何事务中登记了DbContext而enlist = false? 我正在跟踪DbContext.Database.CurrentTransaction,但我注意到它总是为空。
我知道当enlist = false时,所有打开的连接都不会在环境事务中登记,是吗?
仅供参考,目前正在使用Oracle数据库;但是,将来MySQL也将开始运作。
谢谢
答案 0 :(得分:0)
我真的不能对1,2和3说些什么..但是:
分配对我来说并不是很清楚。但是,如果某些标准发挥作用,MS会将交易从LTM(Lightweigt Transaction Manger)升级到DTC。例如,如果您尝试在一个事务中访问不同的数据库..
从LTM升级到DTC或如果强制升级将会导致系统崩溃。到目前为止,我还没有找到改变这种行为的方法。这就是为什么你需要考虑一般的交易。如果有可能避免多数据库访问,您可以重新考虑您的交易。
有关详细信息,我建议您Why is my TransactionScope trying to use MSDTC when used in an EF Code First app?,MSSQL Error 'The underlying provider failed on Open'和How do I use TransactionScope in C#?