Beh, ho uno-a-molti modelli relativi:Come rimuovere il figlio da uno a molti record correlati nel primo database del codice EF?
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; }
}
Quello che voglio fare è chiaro Parent.Children
e rimuovere entità figlio correlati da database. Ho già provato:
Database classe del contesto:
modelBuilder.Entity<Parent>()
.HasMany(p => p.Children)
.WithOptional()
.WillCascadeOnDelete(true);
Questo funziona bene, ma ho ancora record ridondanti nel database con Parent_Id = null
campi quando faccio
parent.Children.Clear();
repository.InsertOrUpdate(parent);
nel mio classe di repository. Anche lo stesso comportamento è quando faccio:
modelBuilder.Entity<Parent>()
.HasMany(pr => pr.Children)
.WithOptional(ri => ri.Parent)
.WillCascadeOnDelete(true);
con l'aggiunta di Parent
proprietà in Child
classe
public class Child
{
...
public Parent Parent { get; set; }
...
}
o quando faccio
modelBuilder.Entity<Child>()
.HasOptional(p => p.Parent)
.WithMany(p => p.Children)
.HasForeignKey(p => p.Parent_Id)
.WillCascadeOnDelete(true);
con la proprietà parent_id supplementare in Child
classe
public class Child
{
...
public int Parent_Id { get; set; }
...
}
Quindi, come posso configurare correttamente l'eliminazione a cascata? O come dovrei rimuovere quelle entità infantili? Presumo che questo sia un compito casuale ma mi manca qualcosa.
Puoi pubblicare altro codice? Forse il contenuto completo del tuo 'OnModelCreating()'? Quando copio e incolla le tue entità e il tuo primo tentativo di mappatura (e setto 'Id' come proprietà chiave per entrambe le entità), le eliminazioni sono a cascata per me. –