在代码中调用时,存储过程未更新数据库

时间:2019-06-04 21:52:12

标签: c# entity-framework stored-procedures

我试图在单击按钮时运行存储过程。如果尚不存在,它将插入一列新的型号。

如果我在代码之外运行此存储过程(只需在服务器资源管理器中单击execute)并插入参数值,则它确实会执行预期的操作。

但是,当我尝试从代码中调用此存储过程时,它将告诉我1行受影响,但是当我查看数据库时,那里没有记录。

我之前已经编写了许多存储过程,但从未遇到过此问题,因此我完全不知所措。

这是我的存储过程:

CREATE PROCEDURE [dbo].[AddServers]
    @Model NVARCHAR(50),
    @Serial NVARCHAR(50)
AS
    IF EXISTS(SELECT [Model].[ModelNumber]
              FROM [Model]
              WHERE [Model].[ModelNumber] = @Model)
    BEGIN
        UPDATE [Model]
        SET [Quantity] = ([Quantity] + 1)
        WHERE [Model].[ModelNumber] = @Model 

        SELECT @@ROWCOUNT
    END
    ELSE 
    BEGIN
        INSERT INTO [Model] ([ModelNumber], [Quantity])
        VALUES (@Model, 1) 

        SELECT @@ROWCOUNT
    END

    IF (@Serial != '0')
    BEGIN
        INSERT INTO [Server] ([Model], [SerialNumber])
        VALUES (@Model, @Serial) 

        SELECT @@ROWCOUNT
    END

我要调用存储过程的代码:

    private void AddServers(string model, string serialNumber = "0")
    {
        using (SqlConnection conn = new SqlConnection(@"data source=(LocalDB)\MSSQLLocalDB;attachdbfilename=|DataDirectory|\Exagrid.mdf;integrated security=True;"))
        {
            using (SqlCommand command = new SqlCommand("AddServers", conn))
            {
                command.CommandType = CommandType.StoredProcedure;
                command.Parameters.AddWithValue("@Model", model);
                command.Parameters.AddWithValue("@Serial", serialNumber);
                conn.Open();

                command.ExecuteNonQuery();
            }
        }
    }

PS。我的变量等于:model = 1,serialNumber =3。我正在使用简单的条目进行测试。

0 个答案:

没有答案