2

在当前正在处理客户端的应用程序中,我们要求我们保存系统中发生的每个操作的历史记录,并提供回溯到信息先前状态的能力。

例如:假设我的应用程序需要处理一个储藏室,每个用户都可以添加/更新/删除/读取(所有 CRUD)库存

如果用户使用操作 A1 添加产品 P1 并更新其信息,使其变为具有操作 A2 的 P2,然后是 P3、P4 等等。在应用程序中,用户将有一个屏幕显示产品的所有演变,以及一个显示用户所做的所有操作的屏幕。用户可以选择某个动作并“撤消”它。

乍一看,我认为我将存储某种 Actions 表,其中包含我需要的有关该操作的所有信息,当我需要撤消和操作时,我只需还原代码中的更改。

我的问题是:如果产品不是存储在一张表中而是分成几张表(由于优化/可理解性等),我需要弄清楚更改的确切位置。

我应该在 Actions 表中注明哪些表受到影响并将其反映给 BL 吗????

在我看来,必须有更好的解决方案

4

2 回答 2

1

我曾经做过类似的事情,并且能够恢复您需要跟踪更改的字段的更改。

只要您知道该字段的位置,该字段的位置并不重要。因此,您可以在您的 BL 中创建一种帮助类,该类“知道”每个字段的放置位置并将其映射到数据库中的正确表-> 列。这将减少 BL 中的字符串和其他 DB 元素。

只需将此助手类放在 DAL 中即可。

当您需要查看更改(和/或还原更改)时,请向 DAL 发送问题...

顺便说一句,在 MS-SQL 2008 中有内置的更改跟踪,因此您可以使用它来查找更改。-更改跟踪

于 2009-07-05T06:44:55.153 回答
0

也许使用更具体的操作,以便应用程序确切知道要做什么

不要把逻辑放在数据库上

于 2009-07-04T11:53:51.140 回答