每个层次结构映射问题的NHibernate表

每个层次结构映射问题的NHibernate表,nhibernate,Nhibernate,我们有以下表格结构: tbl_A A_ID INT PK Type_ID INT tbl_EA EA_ID INT PK A_ID FK to tbl_A C_ID INT (reference to other table based on Type_ID from tbl_A) tbl_C C_ID INT PK 所以,我们认为tbl_A是抽象类,每种类型都是抽象类 子类,基于类型_ID的鉴别器。但是我们遇到了 处理tbl_EA的问

我们有以下表格结构:

tbl_A 
   A_ID INT PK 
   Type_ID INT 

tbl_EA 
   EA_ID INT PK 
   A_ID FK to tbl_A 
   C_ID INT (reference to other table based on Type_ID from tbl_A) 

tbl_C 
   C_ID INT PK 
所以,我们认为tbl_A是抽象类,每种类型都是抽象类 子类,基于类型_ID的鉴别器。但是我们遇到了 处理tbl_EA的问题。它有一个假鉴别器,因为你 加入tbl_A以确定类型。这是一张有信用证的提单 tbl_EA中的Type_ID列是多余的,您必须在tbl_A上加入 无论如何,要获取数据,表中有更多的列,但没有 这是我们需要的。然后,我们必须以某种方式映射b/w之间的关系 tbl_C和tbl_EA

获取C实体的所有EA项的SQL:选择*from tbl_EA where C_ID=和中的A_ID从tbl_A中选择A_ID,其中type_ID=

关于如何设置这些表的映射以及相应的 关系?我觉得答案可能在于一个公式
鉴别器,但无法识别

您不能让鉴别器进行连接

是一个类型列表,还是一个实际的实体?A和EA是一对一吗


通常,最好从所需的对象模型开始,并从那里开始工作,即使您的表结构是固定的。

A是一个实体。关系是:A是一个模板,EA是给定实体C的模板副本,但EA仅链接到模板并存储答案A是一个问题模板。因此,A是一对多w/EA。所以实体EA会有答案的属性和a的属性,这就是我们的问题所在——映射这种关系。我相信在tbl_EA中添加一个鉴别器可以解决我们的问题,我们在表更改方面有一定的余地,但需要在其他系统中进行更改,并且有冗余数据。