Хранимая процедура возвращает 0 - PullRequest
0 голосов
/ 09 сентября 2018

У меня есть хранимая процедура в SQL Server, которая выглядит следующим образом:

ALTER PROCEDURE [dbo].[spInsPer]
(
    @person_fname VARCHAR(50),
    @person_lname VARCHAR(50),
    @person_initials VARCHAR(50),
    @person_mono VARCHAR(15),
    @person_pemail VARCHAR(50),
    @status INT
)
AS
    SET NOCOUNT OFF;

    INSERT INTO [tbl_person] ([person_fname], [person_lname], [person_initials], [person_mono], [person_pemail], [status]) 
    VALUES (@person_fname, @person_lname, @person_initials, @person_mono, @person_pemail, @status);

    SELECT 
        person_id, person_fname, person_lname, person_initials, person_mono, 
        person_pemail, status 
    FROM 
        tbl_person 
    WHERE 
        (person_id = SCOPE_IDENTITY())

Я использую эту хранимую процедуру в ASP.NET Web API с Entity Framework.

Мне нужно получить вставленный person_id, но он всегда возвращает 0.

Как только я получу person_id, я хочу выполнить другое действие, основанное на этом. Но не получить результат.

Вот мой код ASP.NET

public HttpResponseMessage PostPer([FromBody] tbl_person Per)
{
        using (var context = new Entities())
        {
            var response = context.spInsPer(Per.person_fname, Per.person_lname, Per.person_initials, Per.person_mono, Per.person_pemail, Per.status);

            var message = Request.CreateResponse(HttpStatusCode.Created, Per);
            message.Headers.Location = new Uri(Request.RequestUri + response.ToString());

            return message;
        }
}

Приведенный ниже вывод выводится при выполнении SP.

enter image description here

1 Ответ

0 голосов
/ 09 сентября 2018

Убедитесь, что таблица, в которую вы вставляете, настроена на идентичность / автоинкремент.

Это объясняет, почему первичный ключ [person_id] не увеличивается. Вы можете проверить это, вставив вручную ... и посмотрите, заполняется ли person_id автоматически ..

...