Linq to sql Linq到SQL-提交更改不起作用

Linq to sql Linq到SQL-提交更改不起作用,linq-to-sql,Linq To Sql,所以-我有一个MySQL数据库和一个employee表,使用Devart Linq to SQL(用于MySQL) 它在DataContext中有一个主键, 我可以加载gridview, 选择一行, 将Staff=的实例设置为gridview中选定的ID和名称或行 将Textbox=设置为员工姓名 更改文本框并将对象Staff.Name设置为文本框 但是我不能将更改提交回db!!!!可能是我作为新手做的一件蠢事 Public Class Form1 Dim db As New Mydb

所以-我有一个MySQL数据库和一个employee表,使用Devart Linq to SQL(用于MySQL) 它在DataContext中有一个主键, 我可以加载gridview, 选择一行, 将Staff=的实例设置为gridview中选定的ID和名称或行 将Textbox=设置为员工姓名 更改文本框并将对象Staff.Name设置为文本框

但是我不能将更改提交回db!!!!可能是我作为新手做的一件蠢事

Public Class Form1

    Dim db As New MydbContext.MydbDataContext
    Dim bs = New BindingSource
    Dim Staff As New MydbContext.Employee

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        ' load employee data from MySQL db in datagrid

        Dim StaffQuery = From s In db.Employees Select s
        bs.DataSource = StaffQuery
        DataGridView1.DataSource = bs

        ' this works fine

    End Sub

    Private Sub DataGridView1_CellClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellClick

        'create an instance of the object Staff with the ID and Name from the datagrid
        'is there a better way to do this?

        Staff.EmployeeID = DataGridView1.Rows(e.RowIndex).Cells("EmployeeID").Value
        Staff.Name = DataGridView1.Rows(e.RowIndex).Cells("Name").Value
        MsgBox(Staff.EmployeeID & " " & Staff.Name)
        TextBox1.Text = Staff.Name

        'this works fine

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Staff.Name = TextBox1.Text   'edit the Name
        MsgBox(Staff.EmployeeID & " " & Staff.Name)  ' this works - shows new Staff.Name from textbox
        db.SubmitChanges()   ' this fails to make db changes

    End Sub

End Class

我认为您需要添加
db.Staff.InsertOnSubmit(Staff)

其中
Staff
Staff
对象集合的名称

但是,与其一直保持上下文和对象,为什么不在用户按下保存按钮时创建新的Staff对象呢


最后,您可以在db上下文上调用
GetChangeSet()
,查看哪些更改处于挂起状态。这可以帮助你理解什么时候发生了奇怪的事情。

运气不佳-尝试了以上所有方法。InsertOnSubmit”不是“LinqTest.MydbContext.mydbdatacontext”的成员,您对
InsertOnSubmit()
的调用在哪里?私有子bntSave_Click(ByVal sender作为System.Object,ByVal e作为System.EventArgs)处理bntSave。单击Dim employee作为新的MydbContext.employee employee.Name=TextBox1.Text MsgBox(employee.EmployeeID&&“employee.Name)”此操作有效-显示文本框db.SubmitChanges()中的新Staff.Name“此操作无法更改数据库MsgBox(db.GetChangeSet().ToString)”“此操作告诉我”添加:0,删除:0,修改:0“'db.InsertOnSubmit(Staff)'ERROR==>InsertOnSubmit'不是'LinqTest.MydbContext.MydbDataContext End SubMy bad'的成员。我已修复了我的答案。您可以编辑您的问题。GetChangeSet()告诉我“添加:0,删除:0,修改:0”