Параметризация команды SQL с использованием ключевого слова IN - PullRequest
0 голосов
/ 28 сентября 2018

Я использую c # + EF6, столкнувшись с проблемой при попытке параметризации команды SQL.В редких случаях мне приходится использовать Context.Database.ExecuteSqlCommand (sqltext).

Проблема заключается в следующем:

выполняемый запрос использует ключевое слово IN, например

DELETE FROM MyTable WHERE ID in (@ids)

@ ids - это список целых чисел - если есть единственное целое число, то запрос выполняется нормально из-за неявного преобразования:

exec sp_executesql N'DELETE FROM MyTable WHERE ID IN (@ids)',N'@ids nvarchar(7)',@ids=N'1' 

, но когда есть список элементов, он завершится с ошибкойошибка преобразования

exec sp_executesql N'DELETE FROM MyTable WHERE ID IN (@ids)',N'@ids nvarchar(7)',@ids=N'1,2' 
Conversion failed when converting the nvarchar value '1,2' to data type int.

Как мне структурировать параметр или sq для работы с использованием параметров sql?

заранее спасибо ...

...