Всегда ли ассоциация внешнего ключа Entity Framework подразумевает каскадное удаление?

После прочтения иностранного Ключи в Entity Framework Я попытался добавить отношение внешнего ключа к приложению EF 5 Code First (на сегодняшний день приложение использует независимые ассоциации).

Я заметил, что сгенерированный DDL включает каскадное удаление. Это противоположно поведению с независимыми ассоциациями.

Учитывая, что отношение внешнего ключа создается в EF Code First путем добавления свойства int с именем в соответствии с соглашением ClassnameId, возможно ли некаскадное удаление? Если да, то какое значение будет присвоено ClassnameId, чтобы разъединить связанный объект, не удаляя его из базы данных?


person Eric J.    schedule 01.09.2012    source источник


Ответы (1)


Если вы явно объявите внешний ключ, который не допускает значение NULL, EF предположит, что вы хотите каскадное удаление.

Вы можете сделать внешний ключ обнуляемым:

public int? YourFkId {get;set;}

Или вы можете использовать беглую запись в своем OnModelCreating

     modelBuilder.Entity<Class1>()
        .HasMany( c => c.Class2s )
        .WithRequired(x => x.Class1 )
        .WillCascadeOnDelete(false);
person Mark Oreta    schedule 01.09.2012