私はASP.NET MVCでAdo.Net Entity Frameworkを使用しています。例えば、私が持っている私のMSSQL 2008データベース以下の単純化されたテーブルとの関係でADO.NET Entity Framework:自動カスケード削除を取得するには?
:
(Song) 1--* (Version) 1 -- 1 (VersionInfo)
が、それは自動的に私が歌を削除するとリンクバージョンとそれらのVersionInfoのは、削除してしまったことは可能ですか?
いくつかのテーブルには、最大8体の関係を持っており、それらの関係があまりにも時々subrelationsを持っているので、現在、私は、手動で多くの作業で、次のコードのようなものを使用しています:
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の関係設定を設定しようとしましたが、それはできませんでした...私はそこに何かを逃したのですか?
とにかく、この問題を他の人がどのように解決するのですか?
Aを削除すると、問題なくBが引き続き存在します。しかし、Bを削除すると、Aは存在しません(それはBを指しているため、もう存在しません)。カスケード削除は、項目(B)を削除すると他の項目(A)が正しくないか、または外部キー制約に違反する場合にのみ発生します。 – Flater