尝试从数据库中删除记录时出现错误。

这是我当前的删除代码:

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中执行了什么,这应该使您对发生的问题有所了解。

09-27 13:33