我有两张桌子,比如说:
PAYMENT
------------------------------
OrderId INT PK
PaymentId INT PK
Amount FLOAT
ChildPaymentRowNum INT
CARD_PAYMENT
------------------------------
OrderId INT PK
PaymentRowNum INT PK
CardType STRING
CHEQUE_PAYMENT
------------------------------
OrderId INT PK
PaymentRowNum INT PK
CheckNumber INT
不,我没有制作这个DB而且我不能改变它。我想将CARD_PAYMENT
和CHEQUE_PAYMENT
映射为joined-subclass
PAYMENT
。这个模型与我发现的示例的不同之处在于,我使用的是复合键和外表中的一个列名不匹配。
我认为如果它不是复合键我可以这样做:
<joined-subclass name="CardPayment" table="CARD_PAYMENT" extends="Payment">
<key column="PaymentRowNum" foreign-key="ChildPaymentRowNum">
</joined-subclass>
如果在复合键上匹配的名称,我可以这样做:
<joined-subclass name="CardPayment" table="CARD_PAYMENT" extends="Payment">
<key>
<column="OrderId">
<column="PaymentRowNum">
</key>
</joined-subclass>
但是,虽然我想做这样的事情,但我很确定这是非法的:
<!-- NO GOOD -->
<joined-subclass name="CardPayment" table="CARD_PAYMENT" extends="Payment">
<key>
<column="OrderId" foreign-key="OrderId">
<column="PaymentRowNum" foreign-key="ChildPaymentRowNum">
</key>
</joined-subclass>
那么,我该怎么做呢?
奖励积分:如果您可以告诉我如何使用NHibernate.Mapping.Attributes
,但如果没有,我可能会想出来。
答案 0 :(得分:0)
foreign-key
属性用于指定应由NHibernate模式生成工具创建的外键约束(不是列!)的名称。它在运行时对NHibernate没有影响。
为什么要在子类键中指定基类的键列名?甚至joined-subclass
的NHibernate文档也在两个表中使用不同的列名:http://nhibernate.info/doc/nh/en/index.html#mapping-declaration-joinedsubclass