使用Dapper从C#调用存储过程时遇到问题

时间:2018-09-20 15:21:00

标签: c# sql-server dapper

我对C#,T-SQL和Dapper完全陌生,并试图执行存储过程,但是我得到了

  

System.Data.SqlClient.SqlException:“ Josh”周围的语法不正确

我的存储过程很简单:

CREATE PROCEDURE [compName\Josh].[josh_test_insert]
    @ssn FLOAT,
    @gpa FLOAT
AS 
BEGIN
    SET NOCOUNT ON;

    INSERT INTO [compName\Josh].josh_testing 
    VALUES (@ssn, @gpa);
END
GO

josh_testing包含SSN和GPA两个字段。

C#代码为

public void InsertPerson(float ssn, float gpa)
{
    using (IDbConnection connection = new System.Data.SqlClient.SqlConnection(Helper.CnnVal("SampleDB")))
    {
        List<new_app> apps = new List<new_app>();
        apps.Add(new new_app { ssn = ssn, gpa = gpa });
        connection.Execute("compName\\Josh.josh_test_insert @ssn, @gpa",apps);
    }
}

有人知道我在这里想念什么吗?

1 个答案:

答案 0 :(得分:3)

只需像在Management Studio中那样转义sp的名称即可:

public void InsertPerson(float ssn, float gpa)
{
    using (IDbConnection connection = new System.Data.SqlClient.SqlConnection(Helper.CnnVal("SampleDB")))
    {
        connection.Execute("EXEC [compName\\Josh].[josh_test_insert] @ssn, @gpa", new { ssn = ssn, gpa = gpa });
    }
}

并传递没有无用List<>的参数。