实现版本历史记录功能

时间:2010-10-01 10:15:15

标签: .net architecture

我们正在ERP应用程序(Winforms / WCF)中实现版本历史记录功能,我们正在寻找最佳方法,到目前为止我们提出了2种解决方案:

1)将对象状态保存为数据库中的二进制文件 2)保存对象的属性名称和值,并在获取

后重新构建它

或者有更好的方法吗?请帮忙。提前谢谢。

2 个答案:

答案 0 :(得分:0)

我依赖于你如何坚持不懈,但this Los Techies blog帖子描述了代码中历史实体的显式建模。从本质上讲,您最终会为历史记录提供一个单独的实体。他们正在使用NHibernate,但我认为如果您自己编写数据库代码,同样的事情也适用。

另一种查看方法是event sourcing,系统上发生的每个操作都会记录为事件。因此,您可以记录您感兴趣的实体所发生的每一项更改。但是,除非您从一开始就以这种方式工作,否则我怀疑仅为版本历史实现这一点。

答案 1 :(得分:0)

@Lasse V. Karlsen,现在我们正在使用POCO来持久化对象。我们没有使用任何ORM。

@Grant Crofton,看看你提到的解决方案,我认为第一种方法对我们来说更实用。我们计划将任何实体(产品,采购订单,销售订单等)的版本历史记录保存到一个中央表中。

由于我们没有使用ORM,因此我们将如何将其保存在数据库上:

  1. 我们是否将版本实体设为流并将其保存在数据库中?这甚至是个好主意吗?它会让我们更轻松。

  2. 或者我们是否将每个属性名称及其对应的对象值保存到数据库中?这样,每当我们需要获得一个实体的版本时,我们只需要提取与对象相关的每个属性和值,并通过代码重建对象(我希望我不要混淆你)

  3. 我为没有直接回复您的每个问题而道歉,这是一个匿名帐户,似乎我无法以之前使用的帐户登录。