2012-11-14 39 views
1

我使用nhibernate envers審覈我的數據/保存以前的版本。存儲以前版本的使用母公司的NHibernate 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 
{ 
    public virtual ICollection<BookRevision> PreviousVersions { get; set; } 
} 

public class BookRevision : BookBase 
{ 
    public virtual int VersionNumber { get; set; } 
    public virtual DateTime VersionTimeStamp { get; set; } 
} 

是可能的envers NHibernate的是(使用功能NHibernate的映射)
什麼會我envers配置需要什麼樣子的?
什麼將我的映射需要什麼樣子的?

回答

1

Envers爲您處理審計,您不必在域模型中定義自己的審計類型。

定義(和其對應爲正常)你的實體

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

如果你想要做書的修改審計,配置Envers這樣

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

我得到的...但是,例如,我在我的應用程序中有一個視圖,我想列出以前版本的書籍 - 其版本號和日期等... – Alex

+2

假設您沒有被宣佈爲特定的全球回憶... IAuditReader()。的createQuery()。ForHistoryOf <圖書,DefaultRevisionEntity>()。[someConditi項]。結果(); 它會包含與書的修訂列表,添加/刪除/修改信息,而當它發生的revEntity默認控股和修訂ID。 – Roger