Уровень изоляции не работает в vb.net при подключении к БД SQL 2008 - PullRequest
0 голосов
/ 03 мая 2011

У меня есть приложение VB.net CF, подключающееся к серверу SQL 2008.Я пытаюсь реализовать транзакции, но когда я нарушаю свой код в начале транзакции, некоторые запросы на чтение не могут быть выполнены для таблицы.Например, выбор всех записей из таблицы, где id <> 123 Не возвращает никаких значений.Но выбор * со склада вернет все значения, кроме строки, над которой я работаю.

Dim SQLComm As Data.SqlClient.SqlCommand
Dim myConnString As String = frmConnectionDetails.GetConnectionString
Dim SQLConn As New SqlConnection(myConnString)
Dim SQLTrans As SqlTransaction
SQLConn.Open()
SQLTrans = SQLConn.BeginTransaction(Data.IsolationLevel.ReadCommitted)
SQLComm = New SqlCommand
SQLComm.Connection = SQLConn
SQLComm.Transaction = SQLTrans
AddOrUpdateStock(objStock, SQLConn, SQLComm)
 -Break here

1 Ответ

0 голосов
/ 07 июня 2011

После запуска транзакции запись блокируется и не может быть доступна до фиксации или отката. Взгляните на этот пример на MSDN.

Кроме того, Data.IsolationLevel применяется на уровне соединения. Если вы хотите сделать грязное чтение, вы должны использовать ReadUncommitted

...