2010-02-17 22 views
0

我有一個父表,訂單和一個子表,[訂單詳細信息],我已經設置了一口流利的映射關係 -意外的行數記錄

(在母訂單類)

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

只有當只有一個子記錄時纔有效,如果有多個子記錄,則子項被刪除,但父母不會!我得到了可怕的 - 意外的行計數錯誤。

我相信這是愚蠢的,我在做,但通過網絡拖網還沒有發現任何東西。

感謝

回答

1

好吧,我想通了這一點,這是我愚蠢,但隨後的答案可能幫助別人,所以這裏去。

[訂單明細]表有一個複合關鍵字,並鏈接到[訂單]和[產品]表(是的,這是我正在使用的羅斯文數據庫)。對於我的測試,我沒有映射我的產品表,並用單個主鍵而不是組合鍵標記了我的[Order Details]類。所以,當Nhibernate根據鍵刪除行時,它希望只看到一行被刪除,而數據庫中存在多行。這是我得到錯誤的原因。相當聰明的Nhibernate。