2012-03-26 5 views
1

保存されたLINQインサートを提出した後、最新の挿入PKを取得します。(これは道でわずかのコード例である)私は例えば、LINQ使用してテーブルを更新するストアドプロシージャを持って手続き

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

私はしたいと思いますどのような私が別の挿入を完了するためにこの主キーを外部キーとして必要とするので、上記の挿入された行の新しく生成された主キーを(もし可能であれば)取り出す方法です。私はあなたがこちらにチェックすることができ、出力パラメータを使用して値を取得する必要があると思う

答えて

4

データベースからその値を戻すようにストアドプロシージャを変更し、次にORMファイルの変更を更新するためにLinqマッピングを再生成する必要があります。その後、sp_Insert_Clientメソッドは整数を返します。

もう1つの方法は、別のパラメータをクエリに追加し、それを出力1としてマークすることです。

は、最後のあなたのSPの使用SCOPE_IDENTITYの内側に私は思い挿入するには:http://msdn.microsoft.com/pl-pl/library/ms190315.aspx

+0

こんにちはMarcin - 私は私たちのデータベースをチェックし、見つけました私たちの実際のSPが主キーの結果値を返すということです。ですから私の問題はあなたのご意見やご協力のために非常に筋が通って解決されました:D –

0

Handling stored procedure output parameters A・スコット区のポストあなた

についてはその簡単

手順

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を移動して、手順を変更する必要があると出力変数として、その主キー返却しなければならない必要があると思います –

+0

@sehe - 私はproceudreを書いてコードを書くつもりですが、ちょうど私が調整コードを与えれば、それが何であるかを知りたいと思っています。彼は彼自身によって学ぶつもりはありませんコードを提供するのではなく、タスクを実行する方法を示すことがより良いと思えば、私はあなたに私の意見があることを願っています。 –

+0

もっと使いたいと思っても使用することに決めましたか? [リンク](http://www.youtube.com/watch?v=XuQ7DehE9bw) – sehe