Комплексное сопоставление NHibernate - PullRequest
0 голосов
/ 31 мая 2010

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

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

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

Ответы [ 2 ]

0 голосов
/ 12 октября 2011
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");
    }
}
0 голосов
/ 31 мая 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...