-1

我希望能够备份表中已修改或删除的行的所有原始数据。我还想跟踪所有插入的行。这样做的原因是我的应用程序将有一个用户来更改对数据库的更改,并且我不想在用户确认所有更改都正确之前提交更改。

我该怎么做呢?我查看了 TransactionScope 和 Transaction 类,但是如果程序对 100 个不同的表进行 100 次更新怎么办。如果我的理解是正确的,那么我需要 100 个不同的线程,直到用户确认更改是正确的?我在搜索提交和回滚事务时遇到了这个问题。

帮助 :(

4

3 回答 3

0

As you want to track all changed rows your issue is not about Transaction. Transaction is for keeping integrity of database incase of an error between two commands. I think you need an Undo/Redo history model.

You can solve your problem by using additional tables. One table for keeping all changes and one for pointing approved version of changes. For a products table it may be something like that:

Products Table
RowId | ProductId | ProductName | Description | Price | ChangingTime

ApprovedProducts Table
ProductId | RowId

Whenever user updates a product you add a new row into Products table and you can point the desired row with RowId in ApprovedProducts table.

于 2013-04-12T21:28:43.580 回答
0

我认为你应该让数据库去做,你可以写一个插入、更新和删除的触发器,并保存新数据和旧数据。不推荐在前端执行此操作,触发器很容易且可移植到任何数据库引擎。

问候,

于 2013-04-13T01:29:12.090 回答
0

如果您正在等待用户输入,您不应该让交易一直处于打开状态。事务更适合处理数据库本身或管理数据库操作的 .NET 代码的低级别回滚。

如果您正在等待用户输入,请将临时数据存储在不同的表中,直到您得到他们的确认,然后将数据移动到其最终位置。

于 2013-04-12T20:53:03.853 回答