gpt4 book ai didi

c# - ADO.NET Entity Framework : How to get auto cascading deletions?

转载 作者:太空狗 更新时间:2023-10-30 01:56:55 24 4
gpt4 key购买 nike

我正在将 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com