OneToMany 関係を削除せずに削除コレクションをカスケードするように EF に指示するにはどうすればよいですか?
すなわち:
public class Client
{
public int Id { get; set; }
public string Name { get; set; }
}
public class Order
{
public int Id { get; set; }
public int ClientId { get; set; }
[ForeignKey("ClientId")]
public Client Client { get; set; }
public ICollection<OrderItem> OrderItems { get; set; }
}
public class OrderItem
{
public int Id { get; set; }
public int OrderId { get; set; }
[ForeignKey("OrderId")]
public Order Order { get; set; }
}
このモデルでは、一部の注文に関連付けられたクライアントを削除しようとすると、削除を回避したいと考えています (1)。ただし、いくつかの OrderItems で Order を削除しようとすると、Order と関連する OrderItems (2) を削除したいと思います。
また、FK 列には 1 つの制限があります。EF の既定の [Model]_Id 形式ではなく、[Model]Id 形式です。
私が定義する場合
modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
(1) は問題なく動作しますが、(2) エラーが発生します。
各コレクションに Fluent を使用する以外に代替手段はありますか? とにかくFluentでこれを行うにはどうすればよいですか?