2016-12-24 32 views
0

我只是感覺我在LINQ世界中的方式,並且設法讓我的VB應用程序從我的Azure數據庫選擇,現在我試圖插入一個新的用戶。在VB窗體中使用LINQ,出現錯誤:當IDENTITY_INSERT設置爲OFF時,無法在表x中插入標識列的顯式值

我收到錯誤說明'IDENTITY_INSERT設置爲OFF時,無法在表x中爲標識列插入顯式值「。

我知道這個問題上有類似的問題,但似乎大多數人都有問題,因爲他們試圖插入一個明確的值,並需要將標誌更改爲ON。我試圖在讓DB分配ID值的同時執行插入,所以我相信IDENTITY_INSERT標誌應該是關閉的,而且我需要更改我的VB或LINQ語句以告訴它不要嘗試爲我的ID分配值柱。

這是我在運行插件的VB表單按鈕代碼:

Private Sub btn_AddUser_Click(sender As Object, e As EventArgs) Handles btn_AddUser.Click 
    Dim db As New stem1DataContext() 

    Dim usr As New Users With 
     {.firstname = txt_firstName.Text, 
     .lastname = txt_lastName.Text, 
     .username = txt_username.Text, 
     .password = txt_password.Text, 
     .email = txt_email.Text} 

    db.Users.InsertOnSubmit(usr) 

    Try 
     db.SubmitChanges() 
    Catch 
     MsgBox("Form not valid: " & Err.Description) 
    End Try 
End Sub 

的USR語句表中的所有字段,除了ID列。我真的不知道我的代碼試圖爲ID列插入一個值,但它可能會在後臺執行,我需要明確告訴它不要。

爲用戶表的SQL低於:

CREATE TABLE [dbo].[Users] (
[Id]  INT   IDENTITY (1, 1) NOT NULL, 
[username] VARCHAR (50) NOT NULL, 
[firstname] VARCHAR (50) NOT NULL, 
[lastname] VARCHAR (50) NOT NULL, 
[email]  VARCHAR (50) NOT NULL, 
[password] NCHAR (10) NULL, 
PRIMARY KEY CLUSTERED ([Id] ASC) 
); 

任何幫助將不勝感激。

+0

對於遇到此問題的其他人,我通過進入連接的.dbml解決了該問題,並在表的ID列下查看了屬性並將屬性「Auto Generated Value」設置爲TRUE。 –

+0

我也意識到,我有這個問題的原因。當我第一次創建表格時,我忘記將ID字段設置爲標識列。我後來又回來了,更新了桌子。事實證明,這個更新不會修改dbml,我認爲這是有道理的,但是您需要知道您需要進入並進行額外的更改以避免此問題。 –

+1

您應該爲此問題發佈自己的答案,而不會顯示爲「未答覆」。 – shadow

回答

1

對於遇到此問題的其他人,我通過進入.dbml進行連接,並在表的ID列下查看屬性並將屬性「Auto Generated Value」設置爲TRUE。

我也意識到,我有這個問題的原因。當我第一次創建表格時,我忘記將ID字段設置爲標識列。我後來又回來了,更新了桌子。事實證明,這個更新不會修改dbml,我認爲這是有道理的,但是您需要知道您需要進入並進行額外的更改以避免此問題。

相關問題