LINQ刪除記錄實(shí)戰(zhàn)解析
在進(jìn)行LINQ刪除記錄的時(shí)候肯定會(huì)遇到這樣或那樣的問(wèn)題,那么針對(duì)這些可能遇到的問(wèn)題,我們是如何處理呢?下面就向你介紹一個(gè)在LINQ刪除記錄的過(guò)程中遇到的問(wèn)題,希望對(duì)你有所啟發(fā)。
LINQ刪除記錄問(wèn)題的出現(xiàn):
- 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();
- }
我的目的是要?jiǎng)h除ID為albumid的相冊(cè)以及里面的所有照片,但是卻出現(xiàn)了“在更改集中檢測(cè)到了循環(huán)”這個(gè)錯(cuò)誤。
LINQ刪除記錄問(wèn)題的解決方案:
可以使用Linq的DeleteAllOnSubmit語(yǔ)句,不需要循環(huán)。把foreach語(yǔ)句替換為xt.PictureInfo.DeleteAllOnSubmit(picslog);
另:***條語(yǔ)句應(yīng)該用.SingleOrDefault()查詢并對(duì)判斷有沒(méi)有查詢結(jié)果picslog就可以用 var picslog = xt.PictureInfo.where(q.AlbumInfo == albumlog);
還有,如果我們已經(jīng)知道變量的類(lèi)型了為什么還要用匿名類(lèi)型呢?讓編譯器再去做這些工作有點(diǎn)浪費(fèi)吧。
LINQ刪除記錄的操作相關(guān)的內(nèi)容就向你介紹到這里,希望對(duì)你了解和學(xué)習(xí)LINQ刪除記錄有所幫助。
【編輯推薦】