3
嘗試從數據庫中刪除記錄時出現錯誤。LINQ to SQL Sequence包含多個元素
這裏是我當前的刪除代碼:
Dim BAToRemove = From i In uDC.BookAuthors _
Where i.authorID = intAuthorID _
And i.bookID = intBookID _
And i.main = "N" _
Select i Take (1) Distinct
If BAToRemove.Any Then
Dim ba As BookAuthor = BAToRemove.First
uDC.BookAuthors.DeleteOnSubmit(ba)
Dim cs As ChangeSet = uDC.GetChangeSet
uDC.SubmitChanges(ConflictMode.ContinueOnConflict)
If cs.Deletes.Count = 1 Then
Return True
Else
Return False
End If
End If
這是順藤摸瓜,試圖得到它的工作後的代碼。即使沒有.First和Take(1)不同,查詢絕對只返回單個結果。我已經使用了BAToRemove.Count,並且還手動檢查了表格,並且只有一個匹配的行。
BookID和AuthorID都是主鍵。
我也試過在DeleteOnSubmit中只使用BAToRemove.First直。
我也嘗試複製返回的對象的所有元素到一個新的對象,然後附加和刪除,但我得到的錯誤,該元素已經存在(它)。
我對這個問題已經建立的所有其他帖子總是似乎是使用SingleOrDefault,我沒有使用,所以我難住這一個。
任何想法?
更改爲DeleteAllOnSubmit(ba)會給出以下設計時錯誤: 方法'Public Sub DeleteAllOnSubmit(Of TSubEntity As TEntity)(entities As System.Collections.Generic。「)中的類型參數的數據類型。 IEnumerable(Of TSubEntity))'不能從這些參數中推斷出來。 如果我使用DeleteAllOnSubmit(BAToRemove.First),那麼它似乎工作正常,沒有錯誤。這真的很煩人,因爲我發誓我曾嘗試過。 當嘗試了很多解決方案來解決錯誤時,有時候很難記住你嘗試過哪些方法! – hermiod
我有同樣的問題,並在我的情況發現原因 - [看我對另一個問題的回答](http://stackoverflow.com/a/17150062/463828)。 –