Czy EF może automatycznie usuwać dane osierocone, gdy rodzic nie zostanie usunięty?

Dla aplikacji używającej Code First EF 5 beta mam:

public class ParentObject
{
    public int Id {get; set;}
    public virtual List<ChildObject> ChildObjects {get; set;}
    //Other members
}

i

public class ChildObject
{
    public int Id {get; set;}
    public int ParentObjectId {get; set;}
    //Other members
}

Odpowiednie operacje CRUD są wykonywane przez repozytoria, w razie potrzeby.

W

OnModelCreating(DbModelBuilder modelBuilder)

Ustawiłem je:

modelBuilder.Entity<ParentObject>().HasMany(p => p.ChildObjects)
            .WithOptional()
            .HasForeignKey(c => c.ParentObjectId)
            .WillCascadeOnDelete();

Więc jeśliParentObject zostanie usunięty, jego obiekty ChildObject również.

Jeśli jednak uruchomię:

parentObject.ChildObjects.Clear();
_parentObjectRepository.SaveChanges(); //this repository uses the context

Mam wyjątek:

Operacja nie powiodła się: nie można zmienić relacji, ponieważ jedna lub więcej właściwości klucza obcego jest niezawierająca wartości null. Po wprowadzeniu zmiany relacji powiązana właściwość klucza obcego jest ustawiana na wartość pustą. Jeśli klucz obcy nie obsługuje wartości null, musi zostać zdefiniowana nowa relacja, właściwość klucza obcego musi mieć przypisaną inną wartość inną niż null lub niepowiązany obiekt musi zostać usunięty.

Ma to sens, ponieważ definicja jednostek obejmuje przerwane ograniczenie klucza obcego.

Czy mogę skonfigurować jednostkę, aby „wyczyściła się”, gdy zostanie osierocona, lub muszę je ręcznie usunąćChildObjects z kontekstu (w tym przypadku przy użyciu ChildObjectRepository).

questionAnswers(3)

yourAnswerToTheQuestion