C# Nhibernate的历史

C# Nhibernate的历史,c#,nhibernate,logging,orm,mapping,C#,Nhibernate,Logging,Orm,Mapping,我正在使用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 { ret

我正在使用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 */ }
我想知道,如何在实体类中映射这个历史类和历史属性?我的意思是,我将有一个表用于Product,另一个表用于Employee,另一个表用于Customer等,只有一个表称为History for all entities Product,Customer等,但我不会创建外键。我正在考虑创建一个字段来保存实体的类型,但我不知道如何工作,如何以正确的方式将属性映射到过滤器。基于类型。我知道如何使用nhibernate中的列表来做日志


谢谢

只是一个建议。。。您是否考虑过使用审计框架?HibernateJava有HibernateEnvers,它通过非常简单的设置完成了出色的工作。似乎有一个到.NET的端口:

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() { }
}