在提交linq插入存储过程后获取最新插入的PK

时间:2012-03-26 06:53:19

标签: linq

我有一个使用linq更新表的存储过程,例如:(这只是示例代码)

using (DataContext db = new DataContext())
{
    d.sp_Insert_Client( textboxName.Text, textBoxSurname.Text);
}

我想知道的是如何检索(如果可能的话)上面插入的行的新生成的主键,因为我需要这个主键作为外键来完成另一个插入。

2 个答案:

答案 0 :(得分:4)

您必须修改存储过程以从数据库返回该值,然后重新生成Linq映射以更新ORM文件中的更改。之后,您的sp_Insert_Client方法将返回一个整数。

另一种方法是在查询中添加另一个参数并将其标记为输出参数。

要最后插入,请使用SCOPE_IDENTITYhttp://msdn.microsoft.com/pl-pl/library/ms190315.aspx

答案 1 :(得分:0)

我认为你需要使用你可以在这里检查的输出参数来检索值:Handling stored procedure output parameters一个Scott Gu的帖子,可以很容易地解释

程序

enter image description here

为你

create procdeudre nameofprocedure 
    @id int output
as
begin 
    insert in your table statement

    --retrieve identity value
    select @id = scope_identity();
end

代码

enter image description here