Linq to SQL - SubmitChanges не работает - PullRequest
1 голос
/ 16 ноября 2011

Итак - у меня есть база данных MySQL с одной служащей таблицей, использующая Devart Linq to SQL (для MySQL). У нее есть первичный ключ в DataContext, я могу загрузить gridview, выбрать строку, установить экземпляр Staff = вИдентификатор и Имя или строка, выбранная в виде сетки, устанавливают текстовое поле = Имя персонала, изменяют текстовое поле и задают для объекта Staff.Name текстовое поле .....

, но я не могу отправить изменение обратнов БД !!!!Наверное, глупость, которую я делаю новичком.

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

1 Ответ

0 голосов
/ 16 ноября 2011

Полагаю, вам нужно добавить db.Staffs.InsertOnSubmit(Staff)

Где Staffs - это имя коллекции Staff объектов.

Однако вместо того, чтобы держать контекст и объект вокругпочему бы просто не создать новый объект Staff, когда пользователь нажимает кнопку сохранения?

Наконец, вы можете вызвать GetChangeSet() в своем контексте БД, чтобы увидеть, какие изменения ожидают рассмотрения.Это может помочь вам понять, когда происходит что-то странное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...