0

我正在尝试使我的应用程序能够保留以前版本的实体。

例如,如果我有一个Book我希望能够在版本 1 或版本 5 等处检索它...

public class Book
{
    public virtual int ID {get; set;}
    public virtual string Name {get; set;}
    public virtual int Version {get; set;}
}

我像这样映射版本列:

Version(x=>x.Version);

这是有效的。插入时,版本为 1。
如果我按 id 拉回该实体,对其进行编辑并保存,版本将增加到 2。

我的问题是,我怎样才能保留以前的版本?

我怀疑 ID 上有某种复合 版本...?

4

2 回答 2

3

正如 Anton Gogolev 指出的那样 - 版本属性/列不是用于审计,而是用于并发控制。

NHibernate Envers是 NHibernate 的第 3 方审核库,可能适合您的需求。

于 2012-11-12T16:20:19.857 回答
0

Version构造用于实现乐观并发控制,而不是用于存储以前版本的实体。

要实现完整版本控制,您要么必须求助于单独的仅插入BookRevision表,要么使用现在流行的 CQRS/ES。

于 2012-11-12T16:00:33.247 回答