2015-10-24 1 views
0

Mon objet métier client est une racine agrégée pour une collection d'adresses.Suppression des enregistrements enfants de la racine agrégée à l'aide du cadre d'entité

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 
} 

Mon contexte contient

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

mais pas DBSet pour adresse parce que je veux que le client soit la racine globale.

Cependant, lorsque j'utilise

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

Le CUSTOMER_ID dans la table d'adresses est définie sur null au lieu de l'adresse étant retiré de la base de données. Comment puis-je supprimer l'adresse de la base de données à l'aide de la racine agrégée?

J'ai regardé How to remove child one to many related records in EF code first database?

mais il utilise un DBSet pour l'enregistrement enfant.

Répondre

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