Customer、Device、LocationTag の 3 つのエンティティがあります。
顧客は LocationTags のリストを持っています (ID と説明のみ)。また、デバイスのリストもあります。
デバイスには顧客の LocationTags のサブセットがタグ付けされているため、デバイスにも LocationTags のリストがあります (ただし、顧客のもののみ)。
顧客のリストから LocationTag を削除する場合、デバイスの LocationTag のリストからもカスケード削除したいと考えています。現在、ドメインオブジェクトクラスの手動コードで動作していますが、私の意見ではDRYに違反しています。
Fluent NHibernate マッピングを介してこれを達成することは可能ですか?
簡略化された Fluent NHib マッピング:
お客様
public CustomerMap()
{
WithTable("Customers");
Id(x => x.ID)
.WithUnsavedValue(0)
.GeneratedBy.Identity();
Map(x => x.Name);
HasMany<LocationTag>(t => t.LocationTags).IsInverse();
HasMany<Device>(d => d.Devices).IsInverse();
}
デバイス
public DeviceMap()
{
WithTable("Devices");
Id(x => x.ID)
.WithUnsavedValue(0)
.GeneratedBy.Identity();
Map(x => x.Name);
HasMany<LocationTag>(x => x.LocationTags).IsInverse();
}
ロケーションタグ
public LocationTagMap()
{
WithTable("LocationTags");
Id(x => x.ID)
.WithUnsavedValue(0)
.GeneratedBy.Identity();
Map(x => x.Description);
}