Ich benutze zuerst EF6-Code, wenn ich eine Child-Sammlung ändere, dann speichere Save, das Speichern läuft, aber die Db-Zeile wird nicht gelöscht, nur dort ist der Fremdschlüssel auf null gesetzt.Wie kann ich EF6 veranlassen, ein Objekt aus der Datenbank zu entfernen, wenn es aus einer Sammlung entfernt wird?
Grundmodell
public class Building
{
int Id {get;set;}
ICollection<BuildingFloors> BuildingFloors
}
public class BuildingFloors
{
int id
}
ich in der DbContext die Kaskade setzte wie
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Model.Building>()
.HasMany(t => t.BuildingFloors)
.WithOptional(d => d.Building)
.WillCascadeOnDelete(true);
base.OnModelCreating(modelBuilder);
}
Dann, wenn die Sammlung Speicher i die aktuelle Liste bin zu löschen.
building.BuildingFloors.Clear();
dann die neuen Werte hinzufügen.
Wie kann ich EF veranlassen, ein Objekt aus der Datenbank zu entfernen, wenn es aus der Sammlung entfernt wird?
Sie können nicht sein. Wenn Sie jedoch ein Objekt aus dbcontext entfernen, wird es ebenfalls aus der Sammlung entfernt. –
BTW. Wenn Sie die Beziehungen zu "Eins zu Viele" anstatt "Eins/Null" ändern, funktioniert es sofort. –
Können Sie mir erklären, wie ich das machen könnte? – TheAlbear