例如我有 Order
这个订单有 Reserve
字段有 ICollection<ReserveItem>
。
我现在拥有的是:
订单类别
public class Order
{
...
public Reserve Reserve {get; private set;}
public void ClearReserve()
{
// Reserve.Items = null; or Resrver.Items.Clear()
Reserve = null;
}
}
储备舱位
public class Reserve
{
public ICollection<ReserveItems> Items {get; set;}
public DateTime ExpireDate {get; set;}
}
和OrderRepository类
public OrderRepository
{
...
public void ClearOrderReserve(Order order)
{
order.ClearReserve();
repostiry.InsertOrUpdate(order);
}
...
}
在我的数据库上下文类中,我有:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
...
modelBuilder.Entity<Reserve>()
.HasMany(pr => pr.Items)
.WithRequired()
.WillCascadeOnDelete();
...
}
如何正确删除Order.Reserve
null
中的字段(将其值设置为 OrderRepository.ClearOrderReserve(Order order)
)方法并在删除时启动级联以删除冗余 ICollection<ReserveItem>
数据库中的记录?
最佳答案
将保留设置为 null 不会删除它。必须通过DbSet<Reserve>
删除的Remove
方法。
关于c# - 当我使用 Entity Framework 和 CodeFirst 方法将父实体的值设置为 null 时,如何从数据库中删除相关的子实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15525365/