0

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

(在父 Order 类中)

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();

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

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

谢谢

4

1 回答 1

1

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

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

于 2010-02-17T18:13:23.877 回答