NHibernate通用字典表映射

时间:2012-03-07 07:34:32

标签: nhibernate nhibernate-mapping

我的所有词典都有一个表:“Id,TypeId,Value”,因此对于特定的TypeId我有一对:“Id + Value”这是我的具体词典。

我该如何映射?

目前我可以想象我将有一个抽象类Dictionary和具体类:InvoiceTypeDictionary,PaymentTypeDictionary等(我可以将子类鉴别器设置为TypeId,就是这样)。但还有另一种方法可以做到这一点,以避免必要的很多子类吗?

1 个答案:

答案 0 :(得分: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);
}