2

たとえば、私は持っていて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;}
}

およびOrde​​rRepositoryクラス

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>てデータベースから冗長なレコードを削除するにはどうすればよいですか?

4

1 に答える 1

2

予約をnullに設定しても、予約は削除されません。DbSet<Reserve>Removeメソッドを使用して削除する必要があります。

于 2013-03-20T20:38:01.643 に答える