Cóż, mam jeden-do-wielu pokrewnych modeluJak usunąć element potomny do wielu powiązanych rekordów w pierwszej bazie danych kodu 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; }
}
Co chcę zrobić, to jasne Parent.Children
i wyjąć dziecko Podmioty powiązane z bazą danych. Ja już próbowałem:
Database klasa kontekst:
modelBuilder.Entity<Parent>()
.HasMany(p => p.Children)
.WithOptional()
.WillCascadeOnDelete(true);
to działa dobrze, ale nadal mam zbędne rekordy w bazie danych z Parent_Id = null
pól Kiedy zrobić
parent.Children.Clear();
repository.InsertOrUpdate(parent);
w moim klasa repozytorium. Również takie samo zachowanie jest, gdy robię:
modelBuilder.Entity<Parent>()
.HasMany(pr => pr.Children)
.WithOptional(ri => ri.Parent)
.WillCascadeOnDelete(true);
z dodatkowym Parent
własności Child
klasa
public class Child
{
...
public Parent Parent { get; set; }
...
}
lub gdy robię
modelBuilder.Entity<Child>()
.HasOptional(p => p.Parent)
.WithMany(p => p.Children)
.HasForeignKey(p => p.Parent_Id)
.WillCascadeOnDelete(true);
z dodatkową właściwość parent_id w Child
klasy
public class Child
{
...
public int Parent_Id { get; set; }
...
}
Jak więc poprawnie skonfigurować usuwanie kaskadowe? Lub jak powinienem usunąć te elementy podrzędne? Zakładam, że to zwykłe zadanie, ale po prostu coś mi brakuje.
Czy możesz dodać więcej kodu? Może pełna zawartość twojego 'OnModelCreating()'? Kiedy kopiuję i wklejaję twoje encje i twoją pierwszą próbę odwzorowania (i ustawiasz "Id" jako kluczową właściwość dla obu encji), usunięte są dla mnie kaskadowo. –