По-прежнему невозможно настроить отношение с правилом ON DELETE SET NULL, используя сначала код Entity Framework. В качестве обходного пути вы должны загрузить все связанные объекты в памяти, а затем при удалении родительского объекта EF выдаст команды SQL, чтобы установить их внешние ключи в Null.
Это, хотя тривиально реализовать это самостоятельно, используя что-то вроде:
protected override void Seed(Context context)
{
context.Database.ExecuteSqlCommand("ALTER TABLE dbo.Guests DROP CONSTRAINT Guest_PreferredLanguage");
context.Database.ExecuteSqlCommand("ALTER TABLE dbo.Guests ADD CONSTRAINT Guest_PreferredLanguage FOREIGN KEY (LanguageID) REFERENCES dbo.Languages(LanguageID) ON UPDATE NO ACTION ON DELETE SET NULL");
}
(Пример возьмем этот пост.)
Я не вижу проблем с этим подходом: загруженные дочерние сущности будут синхронизироваться с базой данных, потому что EF будет обновлять (устанавливать нуль) свои внешние ключи и свойства справки и что другие записи в базе данных затронуты, не наносит вреда поскольку они еще не были загружены.
Итак, почему эта функция все еще отсутствует? Есть ли скрытая загвоздка?