我试图删除几个表中的某些行,当我尝试执行此操作时,我收到一个InvalidOperationException:所需的列“ id”在结果中不存在。

我试图查找和删除的值已在调用此函数之前添加到列表中。

    For Each dh In DHeadList
        For Each dl In DLineList
            Dim dlparam() = {dh.DHeadID}
            Dim dlQuery As String = "DELETE From dbo.DLine WHERE DHeadId={0}"
            db.ExecuteQuery(Of DLine)(dlQuery, dlparam)
        Next
        Dim dhparam() = {dh.DHeadID}
        Dim dhQuery As String = "DELETE FROM dbo.DHead WHERE id ={0}"
        db.ExecuteQuery(Of DHead)(dhQuery, dhparam)
    Next


我不知道为什么错误会显示“ id”,因为这实际上在我正在查看DLineList的嵌套for循环内出错。因此,直到删除DLine中的所有记录后,我才查看Dhead表的ID。

有什么建议么?

最佳答案

db.ExecuteQuery(Of DHead)(dhQuery, dhparam)
db.ExecuteQuery(Of DLine)(dlQuery, dlparam)


这两个语句之一是根本原因,因为您要查询的是强类型(SQL Server已解析)结果集,因此消息告诉我们,在这两个类之一中,它无法找到要填充的数据库中的ID字段价值。将ID字段添加到这些类中的一个或两个中,就应该设置好了。

09-27 06:29