私は現在、次の(簡略化された)クラス/データベーススキーマを持っています:
Entity Prospect Customer
+- Id +- Id +- Id
+- Address +- Entity +- Entity
+- Name +- ... +- ...
+- ...
ENTITY PROSPECT CUSTOMER
====== ========== ========
ID - INT PK ID - INT PK ID - INT PK
ADDRESS - VARCHAR ENTITY_ID - INT FK ENTITY_ID - INT FK
NAME - VARCHAR ...
...
次の流暢なマッピングとともに:
PROSPECT_MAP:
Table("PROSPECT");
Id(x => x.Id).GeneratedBy.Increment();
References(x => x.Entity).Cascade.All().Fetch.Join().Column("ENTITY_ID");
...
CUSTOMER_MAP:
Table("CUSTOMER");
Id(x => x.Id).GeneratedBy.Increment();
References(x => x.Entity).Cascade.All().Fetch.Join().Column("ENTITY_ID");
...
現在、エンティティにアタッチされているものもたくさんあります (entity_id を FK として使用)。私のアプリケーションでは、見込み客が顧客になることができます。
したがって、新しい顧客を作成し、元の見込み客が使用する entity_id にリンクし (そのエンティティに関連するすべての情報が顧客に属するように)、データベースから見込み客を削除します (基本的には、プロスペクト テーブルからのエントリであり、新しく作成された顧客によって現在リンクされている子コンポーネントにはカスケードされません)
これはNHibernateで可能ですか?ProspectMap に cascade.all が必要であることに注意してください。プロスペクトをそのコンポーネントと共に削除することは、アプリのオプションのままにしておく必要があるためです。
どうもありがとう。