作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在将 Ado.Net Entity Framework 与 ASP.NET MVC 结合使用。
例如,在我的 MSSQL 2008 数据库中,我有以下简化的表和关系:
(Song) 1--* (Version) 1 -- 1 (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 中的关系设置设置为级联,但它没有做任何事情...我是否错过了什么?
不管怎样,其他人是如何解决这个问题的?
最佳答案
您不应该在 Entity Framework 中这样做。所有流行的关系数据库都支持外键上的ON CASCADE DELETE
,这也更加高效。我建议你就这样吧。
在您的情况下,您可能必须将歌曲中的删除级联到版本,并将版本中的删除级联到版本信息。只需在 SQL 管理器中加载表设计器,您应该会在关系下看到相关选项。
关于c# - ADO.NET Entity Framework : How to get auto cascading deletions?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/930235/
我是一名优秀的程序员,十分优秀!