Fluent NHibernate 对复合键的引用
Fluent NHibernate reference to composite key
假设有四个 table:A、B、C 和D。
Atable的主键是ID_A。
Btable的主键是ID_B。
C table 有复合主键 (ID_A,ID_B)。
D table 引用所有其他三个 table 并且在两个 ID_A 和 ID_B 列。从 D table 到 B 和 C table 的引用是可选。
A B C D
------- ------- ------- -------
ID_A ID_B (ID_A,ID_B)
<--------------------- ID_A
<-------- ID_B
<----------------------------------- ID_A
< - - - - - - - - - - - ID_B
< - - - -(ID_A,ID_B)
我将 D table 的映射声明为:
mapping.References(e => e.A).Column("ID_A");
mapping.References(e => e.B).Column("ID_B");
mapping.References(e => e.C).Columns("ID_A", "ID_B");
问题:尝试从 D table select 行时,我得到了 ORA-00918: 列定义不明确 因为 Nhibernate 两次提到 ID_A 和 ID_B 列在生成的 SQL 查询中。
问题:我应该如何指定 D table 的映射?
在这种情况下,我只是将C映射到D中,A和B映射到C中,因此您可以从D导航到A或通过C导航到B。
根据我的经验,在这种情况下尝试走捷径没有任何好处,而且会导致太多问题(不值得麻烦)。 (也许我什至还没有实现实际功能"shortcut"。)
假设有四个 table:A、B、C 和D。 Atable的主键是ID_A。 Btable的主键是ID_B。 C table 有复合主键 (ID_A,ID_B)。 D table 引用所有其他三个 table 并且在两个 ID_A 和 ID_B 列。从 D table 到 B 和 C table 的引用是可选。
A B C D
------- ------- ------- -------
ID_A ID_B (ID_A,ID_B)
<--------------------- ID_A
<-------- ID_B
<----------------------------------- ID_A
< - - - - - - - - - - - ID_B
< - - - -(ID_A,ID_B)
我将 D table 的映射声明为:
mapping.References(e => e.A).Column("ID_A");
mapping.References(e => e.B).Column("ID_B");
mapping.References(e => e.C).Columns("ID_A", "ID_B");
问题:尝试从 D table select 行时,我得到了 ORA-00918: 列定义不明确 因为 Nhibernate 两次提到 ID_A 和 ID_B 列在生成的 SQL 查询中。
问题:我应该如何指定 D table 的映射?
在这种情况下,我只是将C映射到D中,A和B映射到C中,因此您可以从D导航到A或通过C导航到B。
根据我的经验,在这种情况下尝试走捷径没有任何好处,而且会导致太多问题(不值得麻烦)。 (也许我什至还没有实现实际功能"shortcut"。)