У меня есть метод создания таблиц во время выполнения:
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
ExecuteSql для создания таблицы в EF Core ⇐ C#
Место общения программистов C#
1716670109
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 неверен, поскольку этот параметр обычно используется для передачи значений.
[b]Вопрос:[/b] Как передать параметры поля для создания таблицы в 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.
Подробнее здесь: [url]https://stackoverflow.com/questions/78533687/executesql-to-create-table-in-ef-core[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия