Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 删除引用其他对象的实体对象(外键关系表)_C#_Asp.net Mvc 3_Entity Framework - Fatal编程技术网

C# 删除引用其他对象的实体对象(外键关系表)

C# 删除引用其他对象的实体对象(外键关系表),c#,asp.net-mvc-3,entity-framework,C#,Asp.net Mvc 3,Entity Framework,我不能删除我的流派对象,其中包含歌曲对象,因为我得到的收藏被修改错误,请帮助thx 这不是外键关系问题,您不能删除在某个循环中处理的对象 您可以使用以下内容: public void DeleteGenreList() { var genreList = entities.Genres.AsEnumerable(); foreach (var oneGenre in genreList) { foreach (var onesong in oneGen

我不能删除我的流派对象,其中包含歌曲对象,因为我得到的收藏被修改错误,请帮助thx

这不是外键关系问题,您不能删除在某个循环中处理的对象

您可以使用以下内容:

public void DeleteGenreList()
{
    var genreList = entities.Genres.AsEnumerable();

    foreach (var oneGenre in genreList)
    {

        foreach (var onesong in oneGenre.Songs)
        {
            entities.Songs.DeleteObject(onesong);
        }

        entities.Genres.DeleteObject(oneGenre);
    }
}

在使用For-Each循环枚举集合时,不能修改集合

这应该起作用:

var genreList = entities.Genres.ToList();

genreList.ForEach(x=>x.Songs.Clear());    
entities.Genres.Clear();

for(int i=0;i如果流派和歌曲之间的关系被标记为级联删除(在模型映射和数据库中),那么您应该能够删除流派,EF将负责删除歌曲…

这不起作用,没有.clear或。foreach@AlanBudzinski使用var genreList=entities.Genres.ToList();好的,我添加了.ToList(),我的代码如下所示:public void DeleteGenreList(){var genreList=entities.Genres.ToList();genreList.ForEach(x=>x.Songs.Clear());entities.Genres.ToList().Clear();}但我遇到新错误:操作失败:无法更改关系,因为一个或多个外键属性不可为null。对关系进行更改时,相关外键属性设置为null值。如果外键不支持null值,则必须定义新关系,外键属性必须为属性分配另一个非空值,或者必须删除不相关的对象。设置
onesong
的位置在哪里?也不需要
i++
i--
。对于您的方法,更干净的解决方案是
while(entities.Songs.Count>0){entities.Songs.DeleteObject(entities.Songs[0]);}
它应该是entities.Songs[i]而不是onesong。我会修复它。
for (int i=0;i<entities.Songs.Count;i++)
{
       entities.Songs.DeleteObject(entities.Songs[i]);
       i--;
}