NHibernate使用外键关联一对一映射
我有两张桌子:NHibernate使用外键关联一对一映射,nhibernate,nhibernate-mapping,fluent-nhibernate-mapping,Nhibernate,Nhibernate Mapping,Fluent Nhibernate Mapping,我有两张桌子: TableA : Id (identity) IdTableB(Foreign Key) Nullable ... TableB : Id (identity) ... 我做了这个映射: A类(表A) 在IdTableB上用null更新de tableA,但它不会从tableB中删除ClassB 首先,这是我的映射好吗?有更好的解决办法吗 第二,当我明确地从关系中删除时,如何删除ClassB对象 感谢这里试图解释的: 多对一不支持级联全
TableA :
Id (identity)
IdTableB(Foreign Key) Nullable
...
TableB :
Id (identity)
...
我做了这个映射:
A类(表A)
在IdTableB上用null更新de tableA,但它不会从tableB中删除ClassB
首先,这是我的映射好吗?有更好的解决办法吗
第二,当我明确地从关系中删除时,如何删除ClassB对象
感谢这里试图解释的:
多对一
不支持级联全部删除孤立项
。这种设置可以删除不再被引用的实体
换句话说,使多对一
引用为空-不会触发删除
所以,映射是可以的,但上面所需的功能还没有到位。解决方案是显式删除引用会话。删除(classA.ClassB)
...
m.ManyToOne<ClassB>(x => x.ClassB, map =>
{
map.Column("IdTableB");
map.Cascade(Cascade.All);
map.Unique(true);
});
...
...
m.OneToOne<ClassA>(x => x.ClassA, map =>
{
map.PropertyReference(x => x.ClassB);
map.Constrained(false);
});
...
ClassA classA = session.Load(1);
classA.ClassB = null;
session.commit();