2012-03-07 1 views
0

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

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

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

ответ

0

Я не уверен, для какой ценности.

// 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); 
}