使用NHibernate保留以前版本的实体

时间:2012-11-12 15:40:32

标签: c# nhibernate fluent-nhibernate

我正在尝试启用我的应用程序来保留以前版本的实体。

例如,如果我有一个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上有某种复合版本...?

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

Version构造用于实现optimistic concurrency control,而不是用于存储以前版本的实体。

要实现完整版本控制,您必须使用单独的仅插入BookRevision表或使用现在时尚的CQRS / ES。