So – I have a MySQL db with one employee table, using Devart Linq to SQL (for MySQL)
It has a primary key in the DataContext,
I can load the gridview,
select a row,
set an instance of Staff = to the ID and Name or the row selected in the gridview
set a Textbox = to Name of Staff
change the textbox and set the object Staff.Name to the textbox…..
but I cant submit the change back to the db!!!! Probably a stupid thing I’m doing as a newbie.
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
I believe you need to add
db.Staffs.InsertOnSubmit(Staff)Where
Staffsis the name of the collection ofStaffobjects.However, rather than keep the context and object around all the time, why not just create the new Staff object when the user presses the save button?
Finally, you can call
GetChangeSet()on your db context to see what changes are pending. This can help you understand when something strange happens.