2011-12-01 2 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() { } 
} 

싶습니다 내 모델에서 일부 개체가, 법인 추상 클래스에서이 같은 상속이 Entity 클래스에서이 History 클래스와 History 속성을 어떻게 매핑 할 수 있습니까? 나는 제품에 대한 테이블, Employee에 대한 또 다른 테이블, 고객에 대한 테이블 및 모든 엔터티 (제품, 고객 등)에 대한 History라는 하나의 테이블 만 가질 것이지만 외래 키는 생성하지 않을 것입니다. 엔티티의 유형을 저장하기 위해 필드를 만들려고 생각하고 있었지만 작업을 수행하고 올바른 방식으로 필터하기 위해 속성을 매핑하는 방법을 모르겠습니다. (유형에 따라 다름). 나는 로그를하기 위해 nhibernate에서 Listerens를 사용하는 방법을 안다.

감사합니다.

답변

2

그냥 제안 ... 감사 프레임 워크 사용을 고려 했습니까? Hibernate (java 's)는 Hibernate Envers를 가지고 있습니다. 이것은 매우 간단한 셋업으로 멋진 일을합니다. NET에 포트가있는 것 같습니다 : https://bitbucket.org/RogerKratz/nhibernate.envers