如何指示 EF 不要删除 OneToMany 关系而是级联删除集合?
IE:
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 的订单时,我想删除该订单和相关的 OrderItems (2)。
我对 FK 列也有一个限制:它采用 [Model]Id 格式,而不是 EF 默认的 [Model]_Id 格式。
如果我定义
modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
(1) 工作正常,但 (2) 触发错误。
除了为每个集合使用 Fluent 之外,还有其他选择吗?无论如何,如何在 Fluent 中做到这一点?