Отображение таблицы словаря универсального словаря NHibernate - PullRequest
0 голосов
/ 07 марта 2012

У меня есть одна таблица для всех моих словарей: «Id, TypeId, Value», и поэтому для конкретного TypeId у меня есть пара: «Id + Value», которая является моим конкретным словарем.

Как мне это отобразить?

В настоящий момент я могу себе представить, что у меня будет абстрактный класс Dictionary и конкретные классы: InvoiceTypeDictionary, PaymentTypeDictionary и т. Д. (Я могу установить дискриминатор подкласса в TypeId и все). Но есть ли другой способ сделать это, чтобы избежать необходимости большого количества подклассов?

1 Ответ

0 голосов
/ 07 марта 2012

Я не уверен, какое значение для.

// InvoiceTypeMap : ClassMap<InvoiceType>
public InvoiceTypeMap()
{
    Table("dictionaryTable");
    Where("typeid=5");
    Map(it => it.SomeProperty, "value");
}

// PaymentTypeMap : ClassMap<PaymentType>
public PaymentTypeMap()
{
    Table("dictionaryTable");
    Where("typeid=3");
    Map(it => it.SomeOtherProperty, "value");
}


void SetInvoiceTypeToEntity(Invoice invoice, int invoicetypeid)
{
    invoice.Invoicetype = session.Get<InvoiceType>(invoicetypeid);
    // or when you only need the Reference without the actual object here
    invoice.Invoicetype = session.Load<InvoiceType>(invoicetypeid);
}
...