2013-03-20 3 views
2

예를 들어, 나는 Order을 가지며,이 순서는 필드의 값은 ICollection<ReserveItem>입니다. 내가 지금 가지고있는 것은 :Entity Framework 및 CodeFirst 방식을 사용하여 부모 엔티티 값을 null로 설정하면 DB에서 관련 하위 엔티티를 어떻게 삭제할 수 있습니까?

주문 클래스

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

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

준비 제도 이사회 (FRB) 클래스

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); 
    } 
    ... 
} 
데이터베이스 컨텍스트 클래스의 16,

나는이 :

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

어떻게 제대로 Order.Reserve 필드를 삭제 OrderRepository.ClearOrderReserve(Order order) 방법 (가 null 가치의 설정) 및 삭제에 폭포가 데이터베이스에서 중복 ICollection<ReserveItem> 레코드를 제거하기 시작할 수 있습니다?

답변

2

reserve를 null로 설정해도 삭제되지 않습니다. DbSet<Reserve>Remove 메소드를 통해 삭제해야합니다.

+0

이미 문제를 해결했습니다. 감사합니다 ... – Dmytro