我试图用LINQ
更新SQL表。它不断尝试更新表中的第一条记录。如果我选择第一条记录,它将成功更新该记录,但如果我尝试更新任何其他记录,则表示我正在尝试更改PK的CategoryID,因此它不会更改它。
我已经尝试了几个变化,没有运气。VB LINQ to SQL更新
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
看来您正在将categoryId设置为组合框。假设这是WPF或Winforms,你可能会遇到数据绑定问题。既然你持久化了上下文,你应该只能依靠数据绑定来更新你的值,然后调用db.SubmitChanges来应用更改,而无需在代码中手动设置值。了解组合框如何与您的表单相关以提供更明智的响应可能会有帮助。 –