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?
Setting reserve to null will not delete it. You must delete it through DbSet<Reserve>
's Remove
method.