NHibernate 单个表多个值
本文关键字:单个表 NHibernate | 更新日期: 2023-09-27 17:55:15
我有一个映射的类,它的一些值是代码,它们的实际值存在于另一个具有三列的表中,value_type
,value_code
和value
。
我知道映射类中 foreach 字段的value_type
,我想映射它,以便获得value_code
等于类中代码的value
。
想知道我怎么能映射这样的东西......在这件事上,我将不胜感激。
为了将来参考,正如其他人所评论的那样,您的问题表述得很差且含糊不清,通常不太可能按原样回答。 但我明白你想做什么。
首先,这种数据模型 - 本质上是EAV数据库设计 - 可能非常有问题。 除非你绝对必须这样做,这只发生在某些类型的应用程序中,如果可能的话,重构到一个正常的实体关系数据库模型,然后摆脱这种结构。
要在NHibernate中映射它,您必须进行一些设置:
1) 首先,您必须创建一个继承层次结构。 创建一个基抽象类,然后从该基类派生一个新的具体类,每个value_type
字段值一个。 因此,如果value_type
有三个可能的值,"Type1"、"Type2"和"Type3",你将有一个基本的抽象类,然后是三个派生类,一个用于 Type1,一个用于 Type2,一个用于 Type3。 每个类都有一个将保存value
列的属性。
2) 为基类和派生类创建映射。 必须使用单个表模型。 鉴别器列为 value_type
,标识符列为 value_code
。 类中的属性映射到 value
。
3)在要访问这些值的类中,您必须将每个字段的类型更改为与您为该value_type
创建的类相同的类型。
这应该对你有用。