LINQ to SQL存储过程插入

时间:2014-04-17 15:39:54

标签: c# sql sql-server linq

您好我有以下存储过程:

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();

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

1 个答案:

答案 0 :(得分:0)

如果用户存在,您将错过检查,通常您会通过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的评论 你是否有机会在内存中运行ravenDb?