Выполнить Dynami c SQL из Entity Framework Core без предупреждения - PullRequest
0 голосов
/ 14 апреля 2020

У меня есть задача включить / отключить IDENTITY_INSERT для некоторых таблиц в SQL Сервер. Я могу сделать это, используя SET IDENTITY_INSERT TargetTable ON. Обратите внимание, что имя таблицы не может быть передано в качестве параметра. Следующий фрагмент кода НЕ БУДЕТ РАБОТАТЬ :

DECLARE @tableName VARCHAR(100)
SET @tableName = 'TargetTable'
SET IDENTITY_INSERT @tableName ON;

Нет проблем для меня, я сделаю это через C# и Entity Framework Core, например:

string sqlCmd = $@"SET IDENTITY_INSERT {name} ON;";
await _context.Database.ExecuteSqlCommandAsync(sqlCmd);

Но этот код выдает предупреждение:

Предупреждение
Выражение SQL, переданное в ExecuteSqlCommandAsyn c, встраивает данные, которые не будут параметризованы. Обзор потенциальной уязвимости SQL. См. https://go.microsoft.com/fwlink/?linkid=871170 для получения дополнительной информации.

Но, как я объяснил ранее, имя таблицы не может быть передано в качестве параметра.

Что я могу сделать, чтобы удовлетворить это предупреждающее сообщение? Я действительно хочу избежать этого, но я думаю, что мне нужно будет использовать такие прагмы, как это:

#pragma warning disable EF1000
...