Не может справиться с Dapper цитаты - PullRequest
0 голосов
/ 13 апреля 2020

Ниже приведены примеры из моего кода, демонстрирующие это. Надеюсь, что никакая оппозиция не найдет способ выразить это. Таким образом, в целом Dapper не имеет дело с моим кодом, который сделал строку с кавычкой. Я использую приведенную ниже строку в качестве параметра тремя разными способами, просто играю с разными подходами, но все проваливаются. Все, что я хочу передать строку с '0006', '0011', но Даппер все равно помещает дополнительные строки в строку во время выполнения.

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

The matter detailed

1 Ответ

0 голосов
/ 13 апреля 2020

Скомпилировано 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
...