NHibernate 单个表多个值

本文关键字:单个表 NHibernate | 更新日期: 2023-09-27 17:55:15

我有一个映射的类,它的一些值是代码,它们的实际值存在于另一个具有三列的表中,value_typevalue_codevalue

我知道映射类中 foreach 字段的value_type,我想映射它,以便获得value_code等于类中代码的value

想知道我怎么能映射这样的东西......在这件事上,我将不胜感激。

NHibernate 单个表多个值

为了将来参考,正如其他人所评论的那样,您的问题表述得很差且含糊不清,通常不太可能按原样回答。 但我明白你想做什么。

首先,这种数据模型 - 本质上是EAV数据库设计 - 可能非常有问题。 除非你绝对必须这样做,这只发生在某些类型的应用程序中,如果可能的话,重构到一个正常的实体关系数据库模型,然后摆脱这种结构。

要在NHibernate中映射它,您必须进行一些设置:

1) 首先,您必须创建一个继承层次结构。 创建一个基抽象类,然后从该基类派生一个新的具体类,每个value_type字段值一个。 因此,如果value_type有三个可能的值,"Type1"、"Type2"和"Type3",你将有一个基本的抽象类,然后是三个派生类,一个用于 Type1,一个用于 Type2,一个用于 Type3。 每个类都有一个将保存value列的属性。

2) 为基类和派生类创建映射。 必须使用单个表模型。 鉴别器列为 value_type ,标识符列为 value_code 。 类中的属性映射到 value

3)在要访问这些值的类中,您必须将每个字段的类型更改为与您为该value_type创建的类相同的类型。

这应该对你有用。