无法处理 Dapper 报价
Cannot deal with Dapper quotes
下面显示了我的代码结果的高度实例。希望没有人反对我表达这件事。所以整体 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.Varchar).Value = "cat,dog,pig";
它只会找到名字恰好是 cat,dog,pig
的动物。它不会找到猫、狗和猪(3 行)
右:
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";
就像你不能在 c# 中这样做一样:
int x = 1;
string add = "x = x + 1";
add; //it will not increment x! It's not a compiled statement, it's just data
下面显示了我的代码结果的高度实例。希望没有人反对我表达这件事。所以整体 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.Varchar).Value = "cat,dog,pig";
它只会找到名字恰好是 cat,dog,pig
的动物。它不会找到猫、狗和猪(3 行)
右:
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";
就像你不能在 c# 中这样做一样:
int x = 1;
string add = "x = x + 1";
add; //it will not increment x! It's not a compiled statement, it's just data