同时在同一个userID中插入两个表

时间:2015-02-06 14:34:19

标签: c# sql-server linq

我想一次性在两个表中添加数据。

我有两个表, UserCredentials (用户ID,用户名,密码,用户名称)和 EmployeeRecord (用户ID,用户名,名字,姓氏,设防,国籍)

UserId是在DB中生成的两个表中的标识,我正在寻找一种方法,我可以在EmployeeRecord中获取插入记录的userID,以便我可以在UserCredentials表中的同一userId中插入登录凭据。两个记录都需要同时插入。

这就是我现在的代码:

      create procedure enteremployeerecord ( 

            @firstName varchar(100),
            @lastName varchar(100),
            @desigNation varchar(50),
            @natioNality varchar(50),
            @userName varchar(50),
            @userPassword varchar(50),
            @userRole varchar(50)          
            )
  as
  begin

  insert into EmployeeRecord(username,firstname,lastname,designation,nationality)
  values (@userName,@firstName,@lastName,@desigNation,@natioNality)

  insert into UserCredentials(username,password,userrole)
  values (@userName,@userPassword,@userRole)

这里是C#中的LINQ SQL代码(不确定它将如何改变两个查询)

EmployeeRecordDBClassDataContext con = new EmployeeRecordDBClassDataContext();
con.enteremployeerecord(firstNameTextBox.Text, lastTextBox.Text, desginationTextBox.Text,nationalityTextBox.Text,userNameTextBox.Text, passwordEmployeeTextBox.Text, userRoleTextBox.Text)

我正在使用VS 2012& SQL Server 2012

1 个答案:

答案 0 :(得分:3)

  

UserId是在DB

中生成的两个表中的标识

糟糕的主意。只需要一个表负责标识符。否则,您必须添加许多保护措施,以确保记录始终同时添加到两个表中。

为了说明,我们假设EmployeeRecord负责生成UserId。要插入UserCredentials,只需获取生成的ID并插入即可:

@DECLARE @userID int  

insert into EmployeeRecord(username,firstname,lastname,designation,nationality)
values (@userName,@firstName,@lastName,@desigNation,@natioNality)

SELECT @userID = @@SCOPE_IDENTITY()

insert into UserCredentials(userid, username,password,userrole)
values (@userid, @userName,@userPassword,@userRole)

此外,由于表之间存在逻辑1:1关系(由于无法同时插入两个表,因此无法在SQL中实现),我将质疑表是否应合并为一个表。如果没有理由将它们分开,那么不要将它们分开