【发布时间】:2012-01-04 09:35:28
【问题描述】:
我正在尝试向我们的数据库对象添加事务支持。 此对象是一个远程处理对象。 (这是为了确保在 Windows 客户端上,不需要数据库连接。)
现在我想添加对事务的支持; 基本上,客户需要像这样使用它;
- 开始交易
- ExecuteNonQuery("insert...")
- ExecuteNonQuery("insert...")
- 提交/回滚
Public Function ExecuteNonQuery(ByVal Query As String) As Integer
Dim intResult As Integer = -1
Using conn As New SqlConnection(Me.strConnectionString)
Using cmd As New SqlCommand(Query, conn)
conn.Open()
intResult = cmd.ExecuteNonQuery()
End Using
End Using
Return intResult
End Function
所以我遇到的问题是,当我在上述方法中使用新连接(using conn...)时,我无法真正创建事务。
所以我认为我需要将 SqlConnection 实例移到方法之外并将其更改为类级变量。但这不是我认为的最佳实践。 (?) 另外:按顺序执行大量查询会导致错误:“内部致命错误”。
有没有人可以指出我正确的方向?我在网上找到的所有示例都以最简单的方式通过直接按顺序执行多个查询来涵盖事务。
编辑:有点像this question。 (如何在 .NET 中为多个 SqlConnections 使用单个 SqlTransaction?) 。所以也许这是不可能的,但是有解决方法吗?
编辑 2: 似乎也引发了这个“内部致命错误”,因为该对象是并行使用的。也许这是不可能的?
【问题讨论】:
标签: vb.net transactions remoting