NHibernate一对多关系中的删除问题

标签 nhibernate fluent-nhibernate one-to-many cascade

我有 A 类和 B 类的映射,其中“一侧”是 A,“多侧”是 B。B 引用 A,其中外键不可为空。使用 FluentNH 将 A 集映射为 B 的 Cascade.Delete()。当我尝试删除 A 时,NHibernate 尝试更新 B 并将外键设置为 null。因此,由于外键不可为空,因此会发生错误。

我该怎么办?使外键可为空?

编辑:当我将外键设置为可为空时,它可以工作。但这是正确的方法吗?

最佳答案

我遇到的另一个解决方案如下:

HasMany(a => a.B).Cascade.AllDeleteOrphan().Inverse();

如果你想要a.B.Clear()删除所有B,你需要DeleteOrphan。

编辑:由于您只是级联删除,因此这里仅删除:

HasMany(a => a.B).Cascade.Delete().Inverse();

逆属性是说,对于从A到B的关系,拥有该关系的是A(即B)的逆(它在数据库中具有FK)。您可以阅读有关逆的更多信息 Inverse Attribute in NHibernate

关于NHibernate一对多关系中的删除问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4289307/

相关文章:

.net - 使用 Ignore.NotFound 延迟加载 NHibernate

c# - 如何设计处理(真实)契约(Contract)的数据模型?

hibernate - 如何使用 ColdFusion ORM 映射基类?

c# - 使用流畅的 nhibernate 映射进行持久性规范测试

entity-framework - EF6 OutOfMemoryException 使用 varbinary(max) 属性评估实体

.net - Nhibernate vb.net mvc 无法编译映射

caching - 使用二级缓存时,nhibernate 查询缓存和实体缓存有什么区别?

nhibernate - 枚举到整数的映射导致每次刷新时都会更新

entity-framework - Linq toEntity - 如何在实体集合上选择具有 where 条件的实体?

python - flask-sqlalchemy,一对多关系,外键变为NULL