У меня есть несколько сценариев, когда мне нужно сделать несколько вызовов .SubmitChanges () для текста данных, но я хочу сам явно контролировать транзакцию, чтобы сделать ее атомарной. Некоторое время я делал это, создавая соединение, создавая транзакцию на этом соединении, затем создавая текстовый текст и передавая оба. Предположим, что пока я не хочу использовать TransactionScope. Мой код выглядит так:
Using conn As New SqlConnection("connection string...")
conn.Open()
Using trans = conn.BeginTransaction()
Dim dc as new DataContext(conn)
dc.Transaction = trans
' do some work
trans.Commit()
End Using
End Using
Я начал использовать профилировщик Linq To SQL, и он нарушает этот код. По какой-то причине они требуют использования свойства .Connection в текстовом тексте для создания транзакции. Сбой, если вы используете переменную соединения напрямую (что я считаю глупым). Мой вопрос: уместнее ли это сделать так:
Using conn As New SqlConnection("connection string...")
conn.Open()
Dim dc as new DataContext(conn)
Using trans = dc.Connection.BeginTransaction()
dc.Transaction = trans
' do some work
trans.Commit()
End Using
End Using
Какой наиболее распространенный способ сделать это?