LINQ刪除記錄實戰解析
在進行LINQ刪除記錄的時候肯定會遇到這樣或那樣的問題,那么針對這些可能遇到的問題,我們是如何處理呢?下面就向你介紹一個在LINQ刪除記錄的過程中遇到的問題,希望對你有所啟發。
LINQ刪除記錄問題的出現:
- 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刪除記錄問題的解決方案:
可以使用Linq的DeleteAllOnSubmit語句,不需要循環。把foreach語句替換為xt.PictureInfo.DeleteAllOnSubmit(picslog);
另:***條語句應該用.SingleOrDefault()查詢并對判斷有沒有查詢結果picslog就可以用 var picslog = xt.PictureInfo.where(q.AlbumInfo == albumlog);
還有,如果我們已經知道變量的類型了為什么還要用匿名類型呢?讓編譯器再去做這些工作有點浪費吧。
LINQ刪除記錄的操作相關的內容就向你介紹到這里,希望對你了解和學習LINQ刪除記錄有所幫助。
【編輯推薦】