【发布时间】:2015-04-06 17:34:17
【问题描述】:
我想一次性在两个表中添加数据。
我有两个表,UserCredentials(userid,username,password,userrole) 和 EmployeeRecord(userid,username,firstname,lastname,desgination,nationality)
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
【问题讨论】:
-
你为什么不直接创建一个
Trigger -
不是您问题的答案,但您确实不应该以纯文本形式存储密码。您需要改用盐渍哈希。
-
您的表也受到非规范化的影响。您在凭证表中有用户角色。这可以防止用户拥有超过 1 个角色。此外,用户名不应超过 1 个表。
标签: c# sql-server linq