在显示此问题的代码结果的高级实例下面。希望没有反对者来表达我的意见。因此,总体而言,Dapper不会处理我的用引号引起来的代码。我使用以下三种不同的方式将字符串用作参数,只是使用了不同的方法,但是都失败了。我只想传递一个带有'0006','0011'的字符串,但是无论如何Dapper都会在运行时在字符串中添加额外的引号。
ALTER PROCEDURE [dbo].[GetEmployeeName] (@EE_Type varchar(40))
AS BEGIN
SELECT PER_Name, EE_Type, StateOfEmployee FROM dbo.Employees WHERE EE_Type in (@EE_Type);
END
已编译的SQL无法以这种方式工作。您不能将CSV字符串放入单个参数中,而无法使IN起作用
错误:
cmd.CommandText = "SELECT * FROM animal WHERE name IN (@param1)";
cmd.Parameters.Add("@param1", SqlDbParameter).Value = "cat,dog,pig";
右:
cmd.CommandText = "SELECT * FROM animal WHERE name IN (@param1,@param2,@param3)";
cmd.Parameters.Add("@param1", SqlDbParameter.Varchar).Value = "cat";
cmd.Parameters.Add("@param2", SqlDbParameter.Varchar).Value = "dog";
cmd.Parameters.Add("@param3", SqlDbParameter.Varchar).Value = "pig";