我在ASP.NET MVC中使用Ado.Net实体框架。ADO.NET实体框架:如何获取自动级联删除?
在我MSSQL 2008数据库我有例如下面的简化表和关系:
(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 2012-06-28 10:54:32