保留对象的历史(WPF,NHibernate)

时间:2013-01-12 16:02:48

标签: c# .net wpf nhibernate

我正在开发一个应用程序,员工可以在其中执行任务列表。而对于每项任务,他们都在使用一些物品。例如:机修工正在开车并且必须更换新的保险杠,因此机械师会去仓库并采取新的项目。该特定项目具有单价。因此,当这家伙拿起他的固定车时,他会为保险杠支付特定的价格。但是,让我们说价格在几周后就会发生变化。所以我改变了该项目的单价。但在这项任务的历史中,它仍然是旧价格。

我想知道你最能保留历史的方法。我想在更改价格之前复制该特定项目,然后使用旧价格更新任务。之后,我将使用新价格更新该项目。

或者还有其他方法可以达到这个目的吗?我正在使用Fluent NHibernate来处理我的数据库

让我们说这些是我的课程(有点简单和足够的例子)

public class Task
{
  public virtual int Id;
  public virtual string Description;
  public virtual IList<Item> Items;
}

public class Item
{
  public virtual int Id;
  public virtual string ItemName;
  public virtual decimal UnitPrice;
}

欢迎任何帮助:)

2 个答案:

答案 0 :(得分:1)

有两种基本策略:

  1. 使用历史记录,例如价格表上的scd-2实施。
  2. Item中的所有字段复制到一个单独的表/类(例如ItemInTask)中,该表捕获创建任务时使用的确切单位数据。

答案 1 :(得分:1)

如果是发票(这里似乎是用例),“总是”在创建时将当前价格复制到发票行。

只应在实际价格表上更新价格。在跟踪价格和价格方面省去了很多麻烦。历史。

保留实际价格表的历史仍然是一个想法(例如审计),但不应该用它来创建发票并询问/查询历史记录:[该项目的实际价格是多少?日期]