LINQ to SQL存储过程插入

本文关键字:插入 存储过程 SQL to LINQ | 更新日期: 2023-09-27 17:58:44

Hi我有以下存储过程:

create procedure dbo.AddNewUser
(
    @uName nvarchar(20),
    @pass nvarchar(20),
    @fName nvarchar(20),
    @lName nvarchar(20)
)
AS
    insert into [Users] (Username, Password, Firstname, Lastname)
    values (@uName, @pass, @fName, @lName)

这是我桌子的代码:

CREATE TABLE [dbo].[Users] (
    [Id]        INT        IDENTITY (1, 1) NOT NULL,
    [Username]  NCHAR (20) NOT NULL,
    [Password]  NCHAR (20) NOT NULL,
    [Firstname] NCHAR (20) NOT NULL,
    [Lastname]  NCHAR (20) NOT NULL,
    PRIMARY KEY CLUSTERED ([Id] ASC)
);

我的windows窗体程序目前有4个文本框和1个按钮。我正在尝试将文本框中的文本插入到我的数据库中。这是我点击事件的代码:

DatabaseConnectionDataContext dc = new DatabaseConnectionDataContext();
dc.AddNewUser(tbUsername.Text, tbPassword.Text, tbFirstname.Text, tbLastname.Text);
dc.SubmitChanges();

当我启动程序时,在文本框中输入一些数据,然后单击按钮,文本框中的数据将插入到表中,但当我再次启动程序并在文本框输入一些数据时,新数据将插入第一行,而不是创建新行,旧数据将被擦除。任何人都可以提出为什么会发生这种情况?

LINQ to SQL存储过程插入

如果用户存在,您将错过检查,通常情况下,您会根据id进行检查。

using (var dc = new DatabaseConnectionDataContext()){
if (dc.Users.Any(o => o.Username== tbUsername.Text && o.Password == tbPassword.Text ...){
...
}else{dc.AddNewUser(tbUsername.Text, tbPassword.Text, tbFirstname.Text, tbLastname.Text);}
dc.SubmitChanges();
}

编辑:已阅读StefanoGermani的评论
你在记忆中奔跑吗?