Comment faire pour supprimer enfant de un à plusieurs enregistrements liés dans EF premier code de base de données?

Bien, j'en ai une-à-plusieurs modèle:

public class Parent
{
    public int Id { get; set; }
    public string Name { get; set; }
    public ICollection<Child> Children { get; set; }
}

public class Child
{
    public int Id { get; set; }
    public string ChildName { get; set; }
}

Ce que je veux faire, c'est clair Parent.Children et de supprimer d'un enfant dans des entités de la base de données. J'ai déjà essayé:

Contexte de base de données de la classe:

modelBuilder.Entity<Parent>()
            .HasMany(p => p.Children)
            .WithOptional()
            .WillCascadeOnDelete(true);

cela fonctionne bien, mais j'ai toujours redondant enregistrements dans la base de données avec Parent_Id = null champs quand je fais

parent.Children.Clear();
repository.InsertOrUpdate(parent);

dans ma classe de référentiel. Également le même comportement, c'est quand je fais:

modelBuilder.Entity<Parent>()
            .HasMany(pr => pr.Children)
            .WithOptional(ri => ri.Parent)
            .WillCascadeOnDelete(true);

avec d'autres Parent propriété dans Child classe

public class Child
{
    ...
    public Parent Parent { get; set; }
    ...
}

ou quand je le fais

modelBuilder.Entity<Child>()
            .HasOptional(p => p.Parent)
            .WithMany(p => p.Children)
            .HasForeignKey(p => p.Parent_Id)
            .WillCascadeOnDelete(true);

avec d'autres Parent_Id propriété dans Child classe

public class Child
{
     ...
     public int Parent_Id { get; set; }
     ...
}

Alors, comment puis-je configurer cascade de supprimer correctement? Ou comment dois-je censé supprimer ces enfants? Je suppose que c'est occasionnel de travail, mais je suis juste en manque de quelque chose.

  • Pouvez-vous poster un peu plus de code? Peut-être que la totalité du contenu de votre OnModelCreating()? Quand j'ai copier-coller de vos entités et votre première tentative de cartographie (et de définir Id comme la propriété de clé pour les deux entités), les suppressions en cascade correctement pour moi.
InformationsquelleAutor Dmytro | 2013-05-20