0

私は LINQ の世界で自分のやり方を感じていて、VB アプリを Azure DB から SELECT することができました。今、新しいユーザーを挿入しようとしています。

「IDENTITY_INSERT が OFF に設定されている場合、テーブル x の ID 列に明示的な値を挿入できません」というエラーの説明が表示されます。

この件に関して同様の質問があることは知っていますが、明示的な値を挿入しようとしており、フラグをオンに変更する必要があるため、ほとんどの人が問題を抱えているようです。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)
);

どんな助けでも大歓迎です。

4

1 に答える 1