テーブル Transactions を含む既存のデータベースがあります。各トランザクションが最終的に 1 つのレコードしか持たない TransactionSequence という新しいテーブルを追加しました。シーケンス テーブルを使用して、特定のアカウントのトランザクションをカウントしています。これを、TransactionSequence が TransactionId の主キーを持つ 1 対 1 のマッピングとしてマッピングしました。
制約は、トランザクション テーブルに代わりのトリガーがあり、キャンセルまたはポストされたトランザクションの更新が許可されないことです。
したがって、シーケンスが計算されてトランザクションが保存されると、NHibernate は「UPDATE Transaction SET TransactionId = ?」のようにトランザクションの更新を送信しようとします。WHERE TransactionId = ?'. しかし、これはトリガーのために失敗します。新しい TransactionSequence テーブルが挿入されたときに NHibernate が Transaction テーブルを更新しないようにマッピングを構成するにはどうすればよいですか?
トランザクション マッピング:
<class name="Transaction" table="Transaction" dynamic-update="true" select-before-update="true">
<id name="Id" column="ID">
<generator class="native" />
</id>
<property name="TransactionTypeId" access="field.camelcase-underscore" />
<property name="TransactionStatusId" column="DebitDebitStatus" access="field.camelcase-underscore" />
<one-to-one name="Sequence" class="TransactionSequence" fetch="join"
lazy="false" constrained="false">
</one-to-one>
</class>
そして、シーケンス マッピング:
<class name="TransactionSequence" table="TransactionSequence" dynamic-update="true">
<id name="TransactionId" column="TransactionID" type="Int32">
<generator class="foreign">
<param name="property">Transaction</param>
</generator>
</id>
<version name="Version" column="Version" unsaved-value="-1" access="field.camelcase-underscore" />
<property name="SequenceNumber" not-null="true" />
<one-to-one name="Transaction"
class="Transaction"
constrained="true"
foreign-key="fk_Transaction_Sequence" />
</class>
どんな助けでも大歓迎です...