2012-03-26 36 views
1

我有一个存储过程使用LINQ,如更新表中的LINQ插入后:(这是方式只是示例代码)获取最新插入PK提交存储过程

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

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

回答

4

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

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

要得到最后插入我想你的SP利用SCOPE_IDENTITY内:http://msdn.microsoft.com/pl-pl/library/ms190315.aspx

+0

嗨有Marcin - 我检查我们的数据库,发现我们的实际SP确实返回主键的结果值。所以我的问题已经得到解决,你非常感谢你的意见和帮助:D – 2012-03-26 07:34:09

0

我认为你需要检索利用输出参数值,你可以在这里检查过:Handling stored procedure output parameters斯科特谷后,其解释,很容易

程序

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

+0

@sehe - 我认为它正确的信息只需要去throught aritcle和需要改变的过程,并有作为输出变量和返回的PrimaryKey将执行任务.. – 2012-03-26 07:17:40

+0

@sehe - 我写了proceudre,并要写代码,但只想说一件事,如果我给他调整代码,他希望那是什么意思..他不会学习他自己如果认为它更好地表现出做任务的方式而不是提供代码他希望我希望你能明白我的观点...... – 2012-03-26 07:24:49

+0

你甚至还决定使用甚至去想要做更像? [链接](http://www.youtube.com/watch?v=XuQ7DehE9bw) – sehe 2012-03-26 07:31:32