我有三个实体:Customer,Device和LocationTag。从多个实体的集合中级联删除
客户有一个LocationTags列表(无非是一个ID和一个说明)。他们也有一个设备列表。
设备带有客户位置标签的子集,因此设备也具有位置标签列表(但仅限于客户)。
如果我从客户列表中删除了一个LocationTag,我希望它也能级联删除设备中的LocationTag列表。目前,我有它的工作,但在域对象类中有手动代码,但在我看来违反DRY。
是否有可能通过流利的NHibernate映射来实现这一点?
简体流利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();
}
LocationTag
public LocationTagMap()
{
WithTable("LocationTags");
Id(x => x.ID)
.WithUnsavedValue(0)
.GeneratedBy.Identity();
Map(x => x.Description);
}
对;我的问题应该是,如果这样的事情甚至可以在NHibernate映射中尝试,而不是域对象逻辑。感谢詹姆斯的回应。 – 2009-01-20 00:13:03