У меня есть метод создания таблиц во время выполнения:
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