2011-12-01 212 views
0

我使用NHibernate在asp.net mvc中开发应用程序。我在我的模型的一些实体从实体抽象类继承,像这样:Nhibernate的历史记录

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

我想要知道,我该如何将这个History类和History属性映射到Entity类中?我的意思是,我将有一个产品表,另一个表用于员工,另一个表用于客户等,只有一个表称为所有实体(产品,客户等)的历史记录,但我不会创建外键。我在创建一个字段来保存实体的类型,但我不知道如何做到这一点,并以正确的方式映射属性进行过滤。 (基于类型)。我知道如何使用nhibernate中的Listerens来做日志。

感谢

回答