NHibernate单表多个值

时间:2011-05-08 09:54:44

标签: c# nhibernate nhibernate-mapping

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

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

我想知道如何映射这样的东西......我会在这件事情上做出任何帮助。

1 个答案:

答案 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创建的类相同的类型。

那应该适合你。