VB LINQ to SQL更新

时间:2013-07-17 04:40:17

标签: vb.net linq-to-sql

我正在尝试使用LINQ更新SQL表。它一直在尝试更新表中的第一条记录。如果我选择第一条记录,它将成功更新该记录,但如果我尝试更新任何其他记录,它说我试图更改类别ID,这是PK,所以它不会改变它。
我尝试了几种不同的运气而没有运气。

Imports System.Data.Linq
Public Class frmUpdate
Dim db As New DataClasses1DataContext
Dim catnum As Integer
Private Sub frmUpdate_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    Dim query = From aCat In db.Categories
                Select aCat

    CategoryBindingSource.DataSource = query
End Sub

Private Sub btnUpdate_Click_1(sender As System.Object, e As System.EventArgs) Handles btnUpdate.Click
    Try
        catnum = CInt(CategoryIDComboBox.Text())
        Dim catQuery As Category = (From aCat In db.Categories
                    Where aCat.CategoryID = catnum
                    Select aCat).First()

        catQuery.CategoryID = catnum
        catQuery.CategoryName = CategoryNameTextBox.Text.ToString()
        catQuery.Description = DescriptionTextBox.Text.ToString()

        db.SubmitChanges()
        frmGridView.ShowDialog()
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try

End Sub
End Class

1 个答案:

答案 0 :(得分:0)

您必须删除该行

catQuery.CategoryID = catnum

对象已经具有该值,因为这就是您找到它的方式。显然,为它分配相同的值被视为一种变化。