Так я переключение с SQL Server 2008 R2 (на Windows Server 2012) в PostgreSQL 9.5 (опять же на Windows) и все мои существующие заявления SQL записываются в следующем формате:Зачем мне нужно указывать столбцы и таблицы с помощью Npgsql для C# и PostgreSQL?
INSERT INTO Address (Address1, Address4, Address5, Postcode, IsoCountryCode)
VALUES(@P0, @P1, @P2, @P3, @P4)
Я использую Ngpsql v3.1.3 как моя библиотека .NET, чтобы поговорить с PostgreSQL с C#. Выполнение того же оператора приводит к ошибке, что адрес таблицы не найден. Для того, чтобы заставить его работать я должен обернуть все имена столбцов и имена таблиц в двойных кавычках, например:
INSERT INTO \"Address\" (\"Address1\", \"Address4\", \"Address5\", \"Postcode\", \"IsoCountryCode\")
VALUES(@P0, @P1, @P2, @P3, @P4)
У меня есть более 600 запросов SQL в моем приложении, и я не хочу, чтобы пройти их всех инъекционные кавычки повсюду.
Образец документации Npgsql не использует кавычки, так что я чего-то не хватает? Смотрите здесь Npgsql Documentation Example
В частности, их пример имеет это:
INSERT INTO data (some_field) VALUES ('Hello world')
Так я предположил, что я не должен был бы двойные кавычки вещи. Может ли кто-нибудь просветить меня?
имен объектов по умолчанию чувствителен к регистру, однако, если вы создаете регистрозависимы имена объектов (т.е. они также цитируются в DDL), тогда вам также нужно процитировать их в запросах (если имя не соответствует формату хранения имен, нечувствительных к регистру). –
Хорошо, поэтому я предполагаю, что в PostgreSQL должна быть настройка, чтобы изменить это. Я буквально установил PostgreSQL v9.5 и не изменил никаких параметров конфигурации. – Gareth