Я использую Ado.Net Entity Framework с ASP.NET MVC.
В моей базе данных MSSQL 2008 у меня есть, например, следующие упрощенные таблицы и отношения:
(Song) 1--* (Version) 1 -- 1 (VersionInfo)
Можно ли автоматически удалять связанные Версии и их VersionInfo при удалении Песни?
В настоящее время я использую что-то вроде следующего кода, который требует много ручного труда, поскольку в некоторых таблицах есть до 8 отношений, и эти отношения иногда тоже имеют подчиненные отношения:
db = new Database() //Entities
Song song = db.Song.First();
Song.Version.Load();
foreach(Version version in Song.Version.ToList())
{
//Remove Song-Version Reference.
song.Version.Remove(version);
//Get The VersionInfo so we can delete it after we deleted the Version object.
version.VersionInfoReference.Load();
VersionInfo versionInfo = version.VersionInfo;
//Now we can delete the Version Object.
db.DeleteObject(version);
//Now we can also delete the versionInfo, since the reference is gone.
db.DeleteObject(versionInfo);
}
db.DeleteObject(song);
Должен быть более простой способ получить каскадные удаления. Я уже пытался установить параметр отношения в MSSQL для Cascade при удалении, но ничего не вышло ... Я что-то там пропустил?
В любом случае, как другие люди решают эту проблему?