public void DeleteAlbum(int albumid)
{
var albumlog = (from p in xt.AlbumInfo
where p.Album_id == albumid
select p).Single();
var picslog = from q in xt.PictureInfo
where q.AlbumInfo.Album_id == albumid
select q;
foreach (PictureInfo log in picslog)
{
xt.PictureInfo.DeleteOnSubmit(log);
}
xt.AlbumInfo.DeleteOnSubmit(albumlog);
xt.SubmitChanges();
}
我的目的是要删除ID为albumid的相册以及里面的所有照片,但是却出现了
”在更改集中检测到了循环“这个错误。
可以使用Linq的DeleteAllOnSubmit语句,不需要循环。
把foreach语句替换为xt.PictureInfo.DeleteAllOnSubmit(picslog);
另:第一条语句应该用.SingleOrDefault()查询并对判断有没有查询结果
picslog就可以用 var picslog = xt.PictureInfo.where(q.AlbumInfo == albumlog);
还有,如果我们已经知道变量的类型了为什么还要用匿名类型呢?让编译器再去做这些工作有点浪费吧
同意楼上的
foreach 只能枚举,不能对集合进行更改,用for(...)