How can I delete related child entities from DB when I set parent entity's value to null using Entity Framework and CodeFirst approach?

StackOverflow https://stackoverflow.com/questions/15525365

Pregunta

For Example I have Order and this order has Reserve field which has ICollection<ReserveItem>. What I have now is:

Order class

public class Order
{
    ...
    public Reserve Reserve {get; private set;}

    public void ClearReserve()
    {
        // Reserve.Items = null; or Resrver.Items.Clear()
        Reserve = null;
    }
}

Reserve class

public class Reserve
{
     public ICollection<ReserveItems> Items {get; set;}
     public DateTime ExpireDate {get; set;}
}

and OrderRepository class

public OrderRepository
{
   ...
   public void ClearOrderReserve(Order order)   
   {
       order.ClearReserve();
       repostiry.InsertOrUpdate(order);
   }
   ...
}

in my database context class I have:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    ...
    modelBuilder.Entity<Reserve>()
                .HasMany(pr => pr.Items)
                .WithRequired()
                .WillCascadeOnDelete();
    ...
}

How can I correctly delete Order.Reserve field (set it's value to null) in OrderRepository.ClearOrderReserve(Order order) method and initiate cascade on delete to remove redundant ICollection<ReserveItem> records from database?

¿Fue útil?

Solución

Setting reserve to null will not delete it. You must delete it through DbSet<Reserve>'s Remove method.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top