Używam Entity Framework 4 i mam relacji parent - child z zestawem "Cascade Delete". Tak więc oczekiwałbym, gdy usunę dziecko z rodzica, że dziecko zostanie usunięte, gdy zadzwonię SaveChanges().EF 4: Usunięcie obiektu podrzędnego z kolekcji nie powoduje jego usunięcia - dlaczego?
cuRepository.Attach(_controlUnit);
foreach (var recipe in recipes) {
_controlUnit.Recipes.Remove(recipe);
//repository.DeleteObject(recipe);
}
Zamiast tego pojawia się błąd:
System.InvalidOperationException occurred Message=The operation failed: The relationship could not be changed because one or more of the foreign-key properties is non-nullable. When a change is made to a relationship, the related foreign-key property is set to a null value. If the foreign-key does not support null values, a new relationship must be defined, the foreign-key property must be assigned another non-null value, or the unrelated object must be deleted.
Kiedy jawnie usunąć dzieci (patrz skomentowany linia), wszystko jest w porządku. czego mi brakuje?
miałem dzisiaj ten sam problem i wierzę, że jest to wada projektu w Entity Framework. Relacja między tabelami w SQL Server brzmi "Cascade delete sieroty" i dlatego powinna działać. Działa tak w NHibernate. Na szczęście można go uruchomić po odpowiedzi GraemeMiller i powiązanych z nimi pytaniach. –