2010-05-31 2 views
0

Существует таблица A, содержащая обычные неверсированные данные для объектов. Существуют также таблицы B, C, D с версиями данных определенного типа объекта. Все эти таблицы относятся к таблице A.Конфигурация комплексного комплекса NHibernate

Задача состоит в том, чтобы добавить отображение свойства типа сущности, например, сохраненное в таблице B, которое будет ссылаться на таблицу A, и указать правило, как объект должен быть выборкой из таблицы B на основе идентификатора из таблицы A. (Например, чтобы получить последнюю версию объекта).

Это возможно с NHibernate?

ответ

0

Взгляните на this сообщение от Ayende. Вы можете сопоставить это, используя таблицу для иерархии или таблицы для каждого подкласса. Если вы выберете первый, вам придется добавить столбец дискриминатора в таблицу A.

0
class TableA 
{ 
    public virtual int Id { get; set; } 

    internal virtual IList<TableB> Bs { get; set; } 
    public virtual TableB LatestB { get { return Bs[0]; } set { Bs.Insert(0, value); } } 
} 

class TableAMap : ClassMap<TableA> 
{ 
    public TableAMap() 
    { 
     HasMany(x => x.Bs) 
      .KeyColumn("a_id") 
      .OrderBy("Version desc"); 
    } 
} 
Смежные вопросы