我有一個多對一的對象Product
和Supplier
之間的關係。我需要刪除Supplier
而不刪除屬於它的Product
。NHibernate多對一關係刪除父親只有
這裏是類的簡化版本:
public class Supplier {
public virtual IList<Product> Products { get; protected set; }
}
public class Product {
// Product belongs to a Category but Supplier is optional
public virtual Supplier Supplier { get; set; }
public virtual Category Category { get; set; }
}
我使用FluentNHibernate,但這裏有它產生的映射:
<bag name="Products" cascade="save-update" inverse="true">
<key column="SupplierID" />
<one-to-many class="Me.Product, Me, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</bag>
<many-to-one name="Supplier" column="SupplierID" />
這將創建產品表的外鍵,所以當我試圖對供應商進行直接刪除時,我得到一個外鍵約束錯誤。我嘗試將cascade改爲'all',希望它只能刪除關係,但它刪除了所有產品及其他關聯的對象。
我現在看到的解決此問題的唯一方法是迭代供應商的產品集合,並將供應商屬性設置爲空。有沒有辦法通過映射來實現這種行爲?
數據庫是自動生成的,所以沒有。 – roryf 2009-04-29 10:49:37
此外,我會有幻影SupplierID值沒有關係 – roryf 2009-04-29 10:50:23