存储过程返回0

时间:2018-09-09 12:13:30

标签: entity-framework asp.net-web-api stored-procedures return-value

我在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中使用此存储过程。

我需要插入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 :(得分:0)

确保要插入的表已配置为标识/自动递增。

这可以解释为什么主键[person_id]没有增加。您可以通过手动插入进行测试...,看看是否已自动填充person_id。