2012-03-26 3 views
1

У меня есть хранимая процедура, которая обновляет таблицу с помощью LINQ, например: (это просто пример кода путем)Получить последнюю вставленную PK после подачи LinQ вставки хранимой процедуры

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 –

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 - я думаю, что его правильная информация просто нужно идти Повсеместно aritcle и нужно изменить процедуру и должны вернуть PrimaryKey в качестве выходной переменной и сделаю задачу .. –

+0

@sehe - я написал proceudre и собираюсь написать код, но хочу просто сказать одно, если я дам отрегулированный код, который он хочет, что смысл в этом .. он не собирается учиться у него сам если вы думаете, что лучше показать способ выполнения задачи, а не предоставлять код, который он хочет, я надеюсь, что вы получили мою точку зрения. –

+0

Вы были далеко, даже если решили использовать, даже пойти хотеть выглядеть больше? [link] (http://www.youtube.com/watch?v=XuQ7DehE9bw) – sehe

Смежные вопросы