使用实体框架从聚合根中删除子记录

时间:2015-10-24 02:11:15

标签: entity-framework-6 aggregateroot

我的客户业务对象是地址集合的聚合根。

public class Customer {
  Public Customer {Addresses = new List<Address>}
  public virtual List<Address> Addresses { get; set; }
  // other properties
}

Public class Address {
  public virtual Customer customer {get;set;}
  [NotMapped]

  // other properties
}

我的上下文包含

public DBSet<Customer> Customers {get;set;}

但没有DBSet for Address,因为我希望客户成为聚合根。

但是当我使用

Customer.Addresses.RemoveAll(x=>x.TaggedToDelete)

Address表中的Customer_Id设置为null,而不是从数据库中删除的地址。

如何使用聚合根目录从数据库中删除地址?

我看了看   How to remove child one to many related records in EF code first database?

但它使用DBSet作为子记录。

1 个答案:

答案 0 :(得分:0)

var deleteQueue = customer.Addresses.Where(x => x.TaggedToDelete).ToArray();
 foreach (var a in deleteQueue)
 {
     var entry = connect.Entry(a);
     entry.State = EntityState.Deleted;
 }