У меня есть взаимно-однозначная связь между конвертом и транзакцией. Я замэпили с использованием первичного ключа ассоциации, как показано ниже: NHibernate 2 FKs к одному и тому же PK в отношениях один к одному
<class name="Envelope" table="T_ENVELOPE">
<id name="EnvelopeId" column="ENVELOPE_ID"><generator class="identity"/></id>
<one-to-one class="Transaction" cascade="all" name="Transaction" />
</class>
<class name="Transaction" table="T_TRANSACTION">
<id name="TransactionID" column="TRANSACTION_ID" type="long"><generator class="foreign"><param name="property">Envelope</param></generator></id>
<one-to-one name="Envelope" class="Envelope" constrained="true" />
</class>
Это прекрасно работает, но мое дело осложняется, так как T_TRANSACTION
имеет 2 FKs, что обе карты в T_ENVELOPE's PK (ENVELOPE_ID): TRANSACTION_ID
(как показано выше) и OLD_DEPRECATED_TXN_ID
. Итак, у меня есть 2 FKs в T_ENVELOPE
, которые имеют то же самое значение (идентификатор конверта). Как я могу сделать NHibernate сэкономить ENVELOPE_ID
не только в TRANSACTION_ID
, но и в OLD_DEPRECATED_TXN_ID
?
Желаю, чтобы у меня не было этого требования, но я имею дело с устаревшими схемами кода и кодом. Я знаю, что я могу сделать что-то вроде:
- envelope.Save // это экономит конверт и транзакции идентификатор транзакции, но не OLD_DEPRECATED_TXN_ID
- envelope.transaction.old_deprecated_txn_id = envelope.id
- envelope.Save Но , что приводит к одной вставке и одному обновлению. Как мне сделать только одну вставку?
Вот пример:
T_ENVELOPE
----------
ENVELOPE_ID
1
9
121
T_TRANSACTION
-------------
TRANSACTION_ID | OLD_DEPRECATED_TXN_ID
1|1
9|9
121|121
Ваш вопрос не очень понятно .. Вы можете сделать две таблицы - Сделку и Envelope и показать свои колонны под ними, а затем сказать нам, что ожидаемая связь между ними? – mridula
Прошу прощения, мой вопрос непонятен. На самом деле это очень простая настройка: у вас есть одна таблица с двумя внешними ключами, указывающими на один и тот же первичный ключ другой таблицы. Надеюсь, мой пример лучше объясняет. Благодарю. – MrTibs