使用nhibernate envers与父实体存储以前的版本

使用nhibernate envers与父实体存储以前的版本,nhibernate,fluent-nhibernate,hibernate-envers,Nhibernate,Fluent Nhibernate,Hibernate Envers,我正在使用审核数据/保存以前的版本 我要做的是针对父实体存储以前的版本。 大概是这样的: public abstract class BookBase { public virtual int ID { get; set; } public virtual string Name { get; set; } public virtual string Author { get; set; } } public class Book : BookBase { pu

我正在使用审核数据/保存以前的版本

我要做的是针对父实体存储以前的版本。
大概是这样的:

public abstract class BookBase
{
    public virtual int ID { get; set; }
    public virtual string Name { get; set; }
    public virtual string Author { get; set; }
}

public class Book : BookBase
{
    public virtual ICollection<BookRevision> PreviousVersions { get; set; }
}

public class BookRevision : BookBase
{
    public virtual int VersionNumber { get; set; }
    public virtual DateTime VersionTimeStamp { get; set; }
}
公共抽象类图书库
{
公共虚拟整数ID{get;set;}
公共虚拟字符串名称{get;set;}
公共虚拟字符串作者{get;set;}
}
公共类书:书库
{
公共虚拟ICollection先前版本{get;set;}
}
公共类BookRevision:BookBase
{
公共虚拟整数版本号{get;set;}
公共虚拟日期时间版本时间戳{get;set;}
}
使用envers nhibernate(使用fluent nhibernate进行映射)是否可能做到这一点
我的envers配置需要是什么样子?

我的映射需要是什么样子?

Envers为您处理审计,您不必在域模型中定义自己的审计类型

定义实体(并将其映射为普通实体)

public class Book
{
    public virtual int ID { get; set; }
    public virtual string Name { get; set; }
    public virtual string Author { get; set; }
}
如果要对书籍修改进行审核,请按如下方式配置enver

var enversCfg = new FluentConfiguration();
enversCfg.Audit<Book>();
yourNhCoreConfiguration.IntegrateWithEnvers(enversCfg);
var enversCfg=new FluentConfiguration();
enversCfg.Audit();
yourNhCoreConfiguration.IntegrateWithEnvers(enversCfg);

Envers为您处理审核,您不必在域模型中定义自己的审核类型

定义实体(并将其映射为普通实体)

public class Book
{
    public virtual int ID { get; set; }
    public virtual string Name { get; set; }
    public virtual string Author { get; set; }
}
如果要对书籍修改进行审核,请按如下方式配置enver

var enversCfg = new FluentConfiguration();
enversCfg.Audit<Book>();
yourNhCoreConfiguration.IntegrateWithEnvers(enversCfg);
var enversCfg=new FluentConfiguration();
enversCfg.Audit();
yourNhCoreConfiguration.IntegrateWithEnvers(enversCfg);

我明白了。。。然而,例如,我在我的应用程序中有一个视图,我想列出这本书的以前版本,以及它们的版本号和日期等。假设你没有声明一个特定的全球复仇。。。IAUDiTrader().CreateQuery().ForHistoryOf()[someConditions].Results();它将包含一个列表,其中包含该书的修订版、添加/删除/更改信息、发生时的revEntity默认值以及修订id。我得到了。。。然而,例如,我在我的应用程序中有一个视图,我想列出这本书的以前版本,以及它们的版本号和日期等。假设你没有声明一个特定的全球复仇。。。IAUDiTrader().CreateQuery().ForHistoryOf()[someConditions].Results();它将包含一个列表,其中包含书籍的修订、添加/删除/更改信息、发生时的revEntity默认值以及修订id。