【问题标题】:Unexpected row count in Nhibernate when deleting parent records with associated child records删除具有关联子记录的父记录时,Nhibernate 中的意外行数
【发布时间】:2011-01-17 23:10:00
【问题描述】:

我有一个父表 Orders 和一个子表 [Order Details],我已将流利的映射设置为 -

(在父订单类中)

HasMany<OrderDetails>
(x => x.Details).KeyColumn("OrderId").Cascade.AllDeleteOrphan().Inverse();

(在子 [订单详情] 类中)

References(x => x.ParentOrder).Column("OrderId").Not.Nullable().Cascade.None();

我正在尝试通过调用来删除父对象 -

session.Delete(parent);
session.Flush();

这仅在只有一个子记录时才有效,如果有多个子记录,则子记录将被删除,但父记录不会!我得到了可怕的 - 意外的行数错误。

我确信这是我正在做的愚蠢的事情,但是通过网络拖网并没有发现任何东西。

谢谢

【问题讨论】:

    标签: nhibernate fluent-nhibernate cascading-deletes


    【解决方案1】:

    好的,我想通了,是我太笨了,但是答案可能对其他人有帮助,所以就这样吧。

    [Order Details] 表有一个复合键,并链接到 [Orders] 和 [Products] 表(是的,这是我正在使用的 Northwind 数据库)。对于我的测试,我没有映射我的 Products 表,而是使用单个主键而不是复合键标记了我的 [Order Details] 类。因此,当 Nhibernate 基于键删除行时,它希望看到只有一行被删除,而数据库中存在多行。这就是我收到错误的原因。 Nhibernate 相当聪明。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 2020-06-21
      • 1970-01-01
      • 2021-05-23
      相关资源
      最近更新 更多