我正在开发一个应用程序,员工可以在其中执行任务列表。而对于每项任务,他们都在使用一些物品。例如:机修工正在开车并且必须更换新的保险杠,因此机械师会去仓库并采取新的项目。该特定项目具有单价。因此,当这家伙拿起他的固定车时,他会为保险杠支付特定的价格。但是,让我们说价格在几周后就会发生变化。所以我改变了该项目的单价。但在这项任务的历史中,它仍然是旧价格。
我想知道你最能保留历史的方法。我想在更改价格之前复制该特定项目,然后使用旧价格更新任务。之后,我将使用新价格更新该项目。
或者还有其他方法可以达到这个目的吗?我正在使用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;
}
欢迎任何帮助:)
答案 0 :(得分:1)
有两种基本策略:
Item
中的所有字段复制到一个单独的表/类(例如ItemInTask
)中,该表捕获创建任务时使用的确切单位数据。答案 1 :(得分:1)
如果是发票(这里似乎是用例),“总是”在创建时将当前价格复制到发票行。
只应在实际价格表上更新价格。在跟踪价格和价格方面省去了很多麻烦。历史。
保留实际价格表的历史仍然是一个想法(例如审计),但不应该用它来创建发票并询问/查询历史记录:[该项目的实际价格是多少?日期]