ExecuteSql для создания таблицы в EF CoreC#

Место общения программистов C#
Ответить
Anonymous
 ExecuteSql для создания таблицы в EF Core

Сообщение Anonymous »

У меня есть метод создания таблиц во время выполнения:
public async Task CreateTable(string tableName, IEnumerable columns)
{
var columnsString = string.Join(", ", columns.Select(GetColumnString));
/// for example columnsString is:
/// [field_1] NVARCHAR(50),
/// [field_2] INT,
/// [field_3] INT

await _db.ExecuteSqlAsync($"CREATE TABLE [{tableName}] ({columnsString})");
}

После выполнения этого метода я получаю сообщение об ошибке:
Microsoft.EntityFrameworkCore.Database.Command[20102]
Failed executing DbCommand (5ms) [Parameters=[@p0='?' (Size = 4000), @p1='?' (Size = 4000)], CommandType='Text', CommandTimeout='30']
CREATE TABLE [@p0] (@p1)

Api request return that message:
{
"message": "Incorrect syntax near '@p1'."
}

Я понимаю, что p1 неверен, поскольку этот параметр обычно используется для передачи значений.
Вопрос: Как передать параметры поля для создания таблицы в ExecuteSqlAsync?
Конечно, я могу использовать ExecuteSqlRawAsync, но в моем случае я получаю предупреждение:
Warning EF1002 Method 'ExecuteSqlRawAsync' inserts interpolated strings directly into the SQL, without any protection against SQL injection. Consider using 'ExecuteSqlAsync' instead, which protects against SQL injection, or make sure that the value is sanitized and suppress the warning.


Подробнее здесь: https://stackoverflow.com/questions/785 ... in-ef-core
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»