我有一个使用linq更新表的存储过程,例如:(这只是示例代码)
using (DataContext db = new DataContext())
{
d.sp_Insert_Client( textboxName.Text, textBoxSurname.Text);
}
我想知道的是如何检索(如果可能的话)上面插入的行的新生成的主键,因为我需要这个主键作为外键来完成另一个插入。
答案 0 :(得分:4)
您必须修改存储过程以从数据库返回该值,然后重新生成Linq映射以更新ORM文件中的更改。之后,您的sp_Insert_Client
方法将返回一个整数。
另一种方法是在查询中添加另一个参数并将其标记为输出参数。
要最后插入,请使用SCOPE_IDENTITY
:http://msdn.microsoft.com/pl-pl/library/ms190315.aspx
答案 1 :(得分:0)
我认为你需要使用你可以在这里检查的输出参数来检索值:Handling stored procedure output parameters一个Scott Gu的帖子,可以很容易地解释
程序
为你
create procdeudre nameofprocedure
@id int output
as
begin
insert in your table statement
--retrieve identity value
select @id = scope_identity();
end
代码