我有三个实体:客户、设备和 LocationTag。
客户有一个 LocationTag 列表(只不过是一个 ID 和一个描述)。他们还有一个设备列表。
设备使用客户 LocationTag 的一个子集进行标记,因此设备也有一个 LocationTag 列表(但仅限于客户的)。
如果我从客户列表中删除 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);
}