我会尽量准确地解释这个问题。
有一个实体与(集合)A
具有一对多关系。B
此外, entity与 entityB
有many-to-many
关系C
。
当我第一次存储类型的瞬态对象时A
,A
与相关的瞬态B
实体实例A
都在数据库中正确创建,但C
与B
不会创建
多对多关联在关联的两边映射如下(mapping-by-code方式):
// Mapping for collection of Entity C on Entity B
@class.Set
(
entityB => entityB.EntityCList,
map =>
{
map.Table("EntitiesBInEntitiesC");
map.Cascade(Cascade.All);
map.Key(key => key.Column("EntityBId"));
map.Inverse(false);
},
map => map.ManyToMany(relMap => relMap.Column("EntityCId"))
);
// Mapping for collection of Entity B on Entity C
@class.Set
(
entityB => entityB.EntityBList,
map =>
{
map.Table("EntitiesBInEntitiesC");
map.Cascade(Cascade.All);
map.Key(key => key.Column("EntityCId"));
map.Inverse(true);
},
map => map.ManyToMany(relMap => relMap.Column("EntityBId"))
);
此外,当实体B
和实体C
都是瞬态对象时被实例化时,我在实体B
集合上添加实体之一C
,反之亦然。
最后,事务成功结束:我的意思是实体A
和B
,以及它们的关联按预期存储在数据库中。
为什么实体C
关联没有保存在数据库中?我究竟做错了什么?
注意:我使用的是最新版本的 NHibernate 3.x 系列。
注意 2:我刚刚分析了 SQL Server 数据库,并且从未执行到 m:n 表中的插入!