我有三个对象A,B和City,其中B继承A。
A包含此结构的ID和名称。
internal class AMap : ClassMap<A>
{
internal AMap()
{
Id(x => x.ID).GeneratedBy.Assigned().Not.Nullable();
Map(x => x.Name).Length(255);
Table("A");
}
}
B应该是一个包含城市对象列表的扩展对象
internal class BMap : SubclassMap<B>
{
internal BMap()
{
HasManyToMany(x => x.Cities).Not.LazyLoad().AsBag().Table("B").Cascade.All();
}
}
这应该导致以下数据库结构
Table A:
- ID
- Name
Table B:
- ID_A
- ID_City
它应该是ManyToMany关系,因此表B中可以多次出现ID_A和ID_City
如何在Fluent NHibernate映射中实现此结构?
谢谢, 异种
答案 0 :(得分:0)
我能够解决这个问题,所以这是头痛的结果:
internal class AMap : ClassMap<A>
{
internal AMap()
{
Id(x => x.ID).GeneratedBy.Assigned().Not.Nullable();
Map(x => x.Name).Length(255);
Map(x => x.Type).Column("ObjType");
DiscriminateSubClassesOnColumn(@"Type");
Table("A");
}
}
internal class BMap : SubclassMap<B>
{
internal BMap()
{
HasManyToMany(x => x.Cities).Not.LazyLoad().AsBag().Table("B").Cascade.All();
}
}
我添加了一个Type字段,用于标识每个子类,然后DiscriminateSubClassesOnColumn
将对象的Type-Information存储在A表中。
B-Table不再存在,但B类的每个对象都有一个映射表,它的城市对象