2012-03-23 2 views
8

Я знаю, что если я использую System.Transactions.TransactionScope и не указываю уровень изоляции, он будет по умолчанию Serializable. Однако, что, если я не использую область транзакций, и просто использую старомодный адаптер таблицы? Каков же уровень изоляции по умолчанию?Каков уровень изоляции ADO.NET по умолчанию?

Большое спасибо заранее.

+5

Это более сложный; уровень изоляции не сбрасывается между использованием объединенного соединения, поэтому он также зависит от того, «что использовалось последним использованием базового соединения» –

+0

@MarcGravell Да, это здорово, спасибо. Мой коллега только что отправил мне ссылку, в которой упоминалось то же самое. Не совсем явный успех, и как я не заметил это через 7 лет с использованием .NET. Я не знаю ... –

+0

Но «default default», вероятно, прочитано. –

ответ

3

Возможно, вы не захотите полагаться на значения по умолчанию, если вам нужно быть абсолютным относительно ваших данных о данных приложения. Эти вещи могут измениться между версиями каркаса.

Настоятельно рекомендуем четко указывать уровни изоляции и настройки сеанса во всех вызовах данных - либо через TransactionScope (что может означать эскалацию в DTC в зависимости от обстоятельств), либо явно в целевом сохраненном вызове proc (если это маршрут).

Более подробную информацию о DTC/TransactionScope: https://stackoverflow.com/a/9075800/1568341

TL; DR

: Прочитайте привержен для SQLs, но не предположить по умолчанию

Смежные вопросы