0

我有两张桌子,说:

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

不,我没有制作这个数据库,不,我不能改变它。我想映射CARD_PAYMENTCHEQUE_PAYMENT作为. 此模型与我发现的示例的不同之处在于我都使用复合键,并且外表中的列名之一不匹配。joined-subclassPAYMENT

我认为如果它不是复合键,我可以这样做:

<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,但如果不是,我可能会弄清楚。

4

1 回答 1

0

foreign-key属性用于指定应该由 NHibernate 模式生成工具创建的外键约束(不是列!)的名称。它在运行时对 NHibernate 没有影响。

为什么要在子类键中指定基类的键列名?甚至 NHibernate 文档joined-subclass在两个表中都使用了不同的列名:http: //nhibernate.info/doc/nh/en/index.html#mapping-declaration-joinedsubclass

于 2013-06-26T11:12:45.550 回答