2012-03-26 60 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