尝试从数据库中删除记录时出现错误。
这是我当前的删除代码:
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都是主键。
我也尝试过只使用BAToRemove.First直接在DeleteOnSubmit中。
我也尝试过将返回对象的所有元素复制到一个新对象,然后附加和删除,但是我得到该元素已经存在的错误(确实如此)。
我针对该问题创建的所有其他帖子似乎总是被证明是使用SingleOrDefault的错,而我没有使用它,因此我对此感到困惑。
有任何想法吗?
最佳答案
您可以尝试调用DeleteAllOnSubmit(ba)
并检查在SQL Server Profiler中执行了什么,这应该使您对发生的问题有所了解。