我有一个使用 FirebirdSQL 连接到 Firebird 2.5 DB 的 WinForms 应用程序。在这个应用程序中,我有一个用于与 DB 交互的 FBConnection 和一个提供用于编辑 DB 的 UI 的控件 - 按钮、文本框等以及各种事件处理程序。当这个控件加载时,我通过调用 FBConnection 实例的 BeginTransaction() 方法来创建一个新事务。因此,当用户与控件(按钮)交互时,我正在调用用于更改 DB 中值的方法(通过调用存储过程或执行 SQL 语句),如下所示:
FbCommand command = new FbCommand(cmd_text, connection);
command.Transaction = transaction;
FbDataReader reader = command.ExecuteReader()
当用户决定应用他对数据库所做的所有更改时,他单击我的控件上的“应用”按钮,该按钮调用 transaction.Commit() 或调用 transaction.Rollback() 的“取消”按钮。
这工作得很好,但突然间我遇到了一个关于在我的应用程序中使用多个事务的问题。在一个应用程序中同时使用多个编辑控件的情况下,您似乎无法在一个连接中创建和使用多个事务。
我的问题是 - 我不知道如何使用一个连接创建多个并行事务。我开始相信 FirebirdSQL 是不可能的。似乎唯一的解决方案是为每个活动事务创建与数据库的新连接,但我不太喜欢这种方式。
如果我对在 FirebirdSQL 中使用事务有误,或者有人知道如何解决我的问题而不是创建与数据库的多个连接,我将不胜感激。