Product
オブジェクトと。の間には多対1の関係がありますSupplier
。それに属するを削除Supplier
せずに削除できる必要があります。Product
クラスの簡略化されたバージョンは次のとおりです。
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" />
これにより、Productsテーブルに外部キーが作成されるため、Supplierで直接削除を実行しようとすると、外部キー制約エラーが発生します。関係を削除するだけであると期待して、カスケードを「all」に変更しようとしましたが、すべての製品とそれに関連する他のオブジェクトが削除されました。
これを今すぐ解決するために私が見ることができる唯一の方法は、SupplierのProductsコレクションを繰り返し、Supplierプロパティをnullに設定することです。マッピングを通じてこの動作を実現する方法はありますか?