默认的 ADO.NET 隔离级别是什么?

9

我知道如果我使用System.Transactions.TransactionScope而没有指定隔离级别,那么它会默认为Serializable。但是,如果我不使用事务范围,而只是使用老式的表适配器呢?那么默认的隔离级别是什么?

非常感谢您提前的帮助。


6
更复杂了;池化连接的使用之间隔离级别不会被重置,因此也取决于“底层连接的最后一次使用在做什么”。 - Marc Gravell
@MarcGravell 是的,太好了,谢谢。我的一个同事刚刚给我发了一个链接,提到了同样的事情。虽然不完全是成功之坑,但我在使用.NET七年中竟然没有注意到它... - Neil Barnwell
但是,“默认默认”可能是读取提交。 - Marc Gravell
在了解到关于池化的这个令人不安的事实后,我发布了一个问题,询问如何避免这种情况:https://dev59.com/22kw5IYBdhLWcg3wfKrZ - usr
1个回答

3
如果您需要对应用程序数据操作绝对准确,就不要依赖默认设置。这些东西可能会因为框架版本的更迭而发生变化。
强烈建议在所有数据调用中明确隔离级别和会话设置 - 可以通过TransactionScope(这可能意味着根据情况升级到DTC)或在目标存储过程调用中明确指定(如果采用该路线)来实现。
有关DTC / TransactionScope的更多详细信息,请参见:https://dev59.com/uWox5IYBdhLWcg3wpFv5#9075800 简而言之:
A:对于SQLS,请采用读取提交模式,但不要假设默认设置。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接