History with Nhibernate

本文关键字:Nhibernate with History | 更新日期: 2023-09-27 18:16:28

我正在使用NHibernate开发asp.net mvc中的应用程序。我有一些实体在我的模型继承自实体抽象类,像这样:

public abstract class Entity
{
    private IList<History> _history = null;
    public virtual long Id { get; set; }
    public virtual IEnumerable<History> History { get { return _history; } }
    public abstract TypeOfHistory GetTypeHistory(); // to return the right type
}
// is it right ?
public enum TypeOfHistory { 
    Product = 1, Employee = 2, Customer = 3
}
public class Product : Entity { /* code */ }
public class Employee : Entity { /* code */ }
public class Customer : Entity { /* code */ }

和我有一个历史类有一个日志的每次修改实体:

public class History
{
    public virtual string Description { get; set; }
    public virtual DateTime Date { get; set; }
    public virtual string User { get; set; }
    public virtual Entity Entity { get; set; }
    public virtual TypeOfHistory Type { get; set; } // is it right ?
    protected History() { }
}

我想知道,我怎么能映射这个历史类和历史属性在实体类?我的意思是,我将有一个表为产品,另一个表为员工,另一个为客户等,只有一个表称为历史为所有实体(产品,客户等),但我不会创建一个外键。我在想创建一个字段来保存实体的类型,但我不知道如何做它的工作和映射属性以正确的方式过滤。(基于类型)。我知道如何使用nhibernate中的监听器来做日志。

谢谢

History with Nhibernate

只是一个建议…您是否考虑过使用审计框架?Hibernate (java的)有Hibernate Envers,它可以通过非常简单的设置来完成出色的工作。似乎有一个到。net的端口:https://bitbucket.org/RogerKratz/nhibernate.envers