我的客户业务对象是地址集合的聚合根。
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作为子记录。
答案 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;
}