无法处理 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