nHibernate Many-to-Many and Cascade Delete

本文关键字:Delete Cascade and Many-to-Many nHibernate | 更新日期: 2023-09-27 18:30:01

我有一个多对多的关联。我的数据库中的表如下:EventCustomer&Customer_Event

在事件映射文件中,我已将关联映射为级联值"all-delete-orphan"

这在添加新记录时非常有效,在删除记录时也非常有效(如果客户未与其他事件关联)。但是,当一个客户与多个事件关联时,我会收到以下异常:DELETE语句与REFERENCE约束冲突。

这是有道理的,但我想知道是否有可能做到以下几点:

删除一个事件并自动删除客户关联(即Customer_Event表中的记录),如果Customer与另一个事件没有关联,也将其删除。(即从Customer表中删除)

这是我在Event.hbm.xml文件中的映射:

<bag name="CustomerList" table="Customer_Event" inverse="false" 
                                                cascade="all-delete-orphan">
  <key column="EventId"/>
  <many-to-many class="Customer" column="CustomerId" />
</bag>

nHibernate Many-to-Many and Cascade Delete

在执行删除操作之前检查此条件,或者在删除方法中再放入一个catch。

如果您有一个业务规则,请将其放入您的应用程序中。数据库主要用于数据存储。