簡體   English   中英

VB.Net-使用InsertOnSubmit添加新行並將其保存到數據庫

[英]VB.Net - Add and save new row to database using InsertOnSubmit

護士表(包含額外數據,但不必包括在內)

字段:ID,名稱,已啟用

示例數據:1-測試護士-正確

我的問題:用戶單擊“添加護士”按鈕,並將新護士添加到列表中,並且根據表中的最后一個ID自動確定ID。 但是,盡管此相同功能在同一程序的其他部分中起作用,但這在此特定塊中不起作用。

與問題相關的代碼:

護士班

Partial Public Class Nurse

Private Sub Nurse_PropertyChanged(sender As Object, e As System.ComponentModel.PropertyChangedEventArgs) Handles Me.PropertyChanged
    Using database As New MaternityDatabaseDataContext
        Select Case e.PropertyName
            Case "First_Name"
                If Me.First_Name.Trim <> "" Then
                    database.ExecuteCommand("UPDATE Nurses SET First_Name = {0} WHERE TableID = {1}", Me.First_Name, Me.TableID)
                End If
            Case "Last_Name"
                If Me.Last_Name.Trim <> "" Then
                    database.ExecuteCommand("UPDATE Nurses SET Last_Name = {0} WHERE TableID = {1}", Me.Last_Name, Me.TableID)
                End If
            Case "Display_Name"
                If Me.Display_Name.Trim <> "" Then
                    database.ExecuteCommand("UPDATE Nurses SET Display_Name = {0} WHERE TableID = {1}", Me.Display_Name, Me.TableID)
                End If
            Case "Enabled"
                database.ExecuteCommand("UPDATE Nurses SET Enabled = {0} WHERE TableID = {1}", Me.Enabled, Me.TableID)
            Case "HomeNumber"
                If Me.HomeNumber.Trim <> "" Then
                    database.ExecuteCommand("UPDATE Nurses SET HomeNumber = {0} WHERE TableID = {1}", Me.HomeNumber, Me.TableID)
                End If
            Case "CellNumber"
                If Me.CellNumber.Trim <> "" Then
                    database.ExecuteCommand("UPDATE Nurses SET CellNumber = {0} WHERE TableID = {1}", Me.CellNumber, Me.TableID)
                End If
        End Select
    End Using
End Sub

End Class

包含addButton的Nurse用戶控件的代碼

Imports System.Collections.ObjectModel

Public Class NursesUserControl

Private NurseList As ObservableCollection(Of Nurse)

Public Sub New()
    ' This call is required by the designer.
    InitializeComponent()

    ' Add any initialization after the InitializeComponent() call.
    NurseList = New ObservableCollection(Of Nurse)
    NursesDataGrid.ItemsSource = NurseList
End Sub

Private Sub AddButton_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles AddButton.Click
    Dim employee As New Nurse
    employee.Enabled = True
    NurseList.Add(employee)

    'TODO: Change using statement below to use maternity brain.
    Using database As New MaternityDatabaseDataContext
        database.Nurses.InsertOnSubmit(employee)
        database.SubmitChanges()
    End Using
End Sub

Private Sub DisableButton_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles DisableButton.Click
    Dim selectedRow As Nurse = TryCast(NursesDataGrid.SelectedValue, Nurse)
    If selectedRow IsNot Nothing Then
        selectedRow.Enabled = False
    End If
End Sub

Private Sub EnableButton_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles EnableButton.Click
    Dim selectedRow As Nurse = TryCast(NursesDataGrid.SelectedValue, Nurse)
    If selectedRow IsNot Nothing Then
        selectedRow.Enabled = True
    End If
End Sub

Private Sub NursesDataGrid_CellEditEnding(sender As Object, e As System.Windows.Controls.DataGridCellEditEndingEventArgs) Handles NursesDataGrid.CellEditEnding
    ' Force update on datagrid cell changes instead of just row changes.
    Static isManualInit As Boolean = True
    If e.EditAction = DataGridEditAction.Commit And isManualInit = True Then
        isManualInit = False
        NursesDataGrid.CommitEdit(DataGridEditingUnit.Row, True)
        isManualInit = True
    End If
End Sub

Private Sub NursesUserControl_Loaded(sender As Object, e As System.Windows.RoutedEventArgs) Handles Me.Loaded
    'TODO: Change using statement below to use maternity brain.
    Using database As New MaternityDatabaseDataContext
        For Each employee As Nurse In database.Nurses.OrderBy(Function(Nurse) (Nurse.Last_Name))
            If employee.Enabled = True Then
                NurseList.Add(employee)
            End If
        Next
    End Using
End Sub

End Class

我的錯誤:無法在護士表的列TableID中插入空值。 為什么它不能根據Nurses表中的最后一個條目自動查找TableID? 任何幫助將不勝感激。

檢查您的表設計。 聽起來好像ID未設置為身份。

如果可以,請刪除該表並使用ID INT IDENTITY(1, 1)重新創建它。

如果無法刪除,則必須手動獲取代碼中的下一個ID。

您可以在此處獲取有關身份的更多信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM