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