Я использую NHibernate для разработки приложения в asp.net mvc. У меня есть некоторые сущности в моей модели, наследуемые от абстрактного класса Entity, что-то вроде этого:
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 */ }
И у меня есть класс History, в котором есть журнал каждой модификации объекта:
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? Я имею в виду, что у меня будет таблица для продукта, другая таблица для сотрудника, другая для клиента и т. Д., И только одна таблица под названием «История» для всех объектов (продукт, клиент и т. Д.), Но я не буду создавать внешний ключ. Я думал создать поле, чтобы сохранить тип объекта, но я не знаю, как это сделать, и правильно сопоставить свойство для фильтрации. (в зависимости от типа). Я знаю, как использовать Listerens в nhibernate для ведения журнала.
Спасибо