Почему метод ExecuteSqlRaw () в ядре EF игнорировал некоторые ключевые слова базы данных - PullRequest
1 голос
/ 24 марта 2020

В документации Microsoft здесь: https://docs.microsoft.com/en-us/sql/t-sql/language-elements/reserved-keywords-transact-sql?view=sql-server-2017, она документирует текущие зарезервированные ключевые слова.

Мой вопрос заключается в том, что, когда я использую одно ключевое слово "semantics Similaritydetailstable" для создания таблицы:

CREATE TABLE semanticsimilaritydetailstable (
     column_name_1 int,
     column_name_2 nvarchar,
);

Во-первых, я выполняю приведенный выше код на sql сервере напрямую , будет SqlException : "Неверный синтаксис рядом с ключевым словом" semanticsdentifitydetailstable "" , Это означает, что я должен добавить «[]» для имени таблицы, потому что я пытаюсь использовать ключевое слово sql для построения таблицы.

А затем я превышаю sql через EF core , например:

string sql = "CREATE TABLE semanticsimilaritydetailstable (
     column_name_1 int,
     column_name_2 nvarchar,
)";

xxDbContext.Database.ExecuteSqlRaw(sql);

Таблица с именем "semanticsельностьitydetailstable" будет создана успешно . Итак, почему это происходит в EF Croe? (То же самое в EF и ADO. NET)

Следует отметить, что , если таблица названа для другой зарезервирован Ключевое слово , например WHERE, AND, COLUMN, при создании таблицы указанным выше способом выдает одно и то же исключение"Неверный синтаксис рядом с ключевым словом 'xxx'";

Ниже На рисунке показан фактический оператор, отправленный на сервер при выполнении запроса EF: введите описание изображения здесь

Имеет ли этот дизайн какое-либо специальное применение? Или, может быть, это их потенциальная ошибка?

Ждем вашего ответа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...