单向一对多关系的流畅 NHibernate 配置 - 删除问题

Posted

技术标签:

【中文标题】单向一对多关系的流畅 NHibernate 配置 - 删除问题【英文标题】:Fluent NHibernate configuration for uni-directional one-to-many relation - Issue on Delete 【发布时间】:2014-07-22 08:20:02 【问题描述】:

我有一个包含 DeliveryDays 集合的地址类。 映射如下(在这个精彩的网站上找到!=):

HasMany(x => x.DeliveryDays)
                .KeyColumn("AddressId")
                .Not.Inverse() 
                .Not.KeyNullable() 
                .Not.KeyUpdate() 
                .Cascade.All();

我的 DeliveryDay 类没有引用地址,我宁愿不这样做!

在向集合中添加项目时,一切都很好,但在删除项目时根本不行:没有生成 SQL 删除!

我错过了什么?

【问题讨论】:

【参考方案1】:

要获得准确的答案,我认为您需要发布更多代码。根据您迄今为止发布的代码,我的猜测是您想使用 Cascade.AllDeleteOrphan() 而不是 Cascade.All()

如果关联的地址被删除,级联选项 All 只会在 DeliveryDay 触发删除,而级联选项 AllDeleteOrphan 将在从关联的地址中删除 DeliveryDay 时触发删除(只要它不与不同的地址关联)。

【讨论】:

以上是关于单向一对多关系的流畅 NHibernate 配置 - 删除问题的主要内容,如果未能解决你的问题,请参考以下文章

Fluent NHibernate 自动映射:一对多实体,多对多后端?

Hibernate框架学习之注解配置关系映射

Nhibernate:如何用一对多关系表示多对多关系?

NHibernate左连接选择计数在一对多关系中

NHibernate 不会删除一对多关系中的孤儿

Nhibernate一对多关系复合键问题