2011-12-01 205 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來做日誌。

感謝

回答