В документации 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: введите описание изображения здесь
Имеет ли этот дизайн какое-либо специальное применение? Или, может быть, это их потенциальная ошибка?
Ждем вашего ответа.