Как использовать имена таблиц PostgreSQL без двойных кавычек в C # и Npgsql - PullRequest
0 голосов
/ 13 декабря 2018

Я пытаюсь выбрать данные из базы данных PostgreSQL 10.5 с помощью библиотеки Npgsql2 - я не могу использовать Npgsql3 или Npgsql4, потому что мне нужно поддерживать Windows XP (максимум .NET 4.0).Я использую следующий код:

var builder = new NpgsqlConnectionStringBuilder();
//setting connection string variables here
var connection = new NpgsqlConnection(builder.Tostring());
var query = "SELECT * FROM \"TableName\" ORDER BY \"ColumnName\"";
var adapter = new NpgsqlDataAdapter(query, connection);
var dataSet = new DataSet();

connection.Open();
adapter.Fill(dataSet);

Если я не использую двойные кавычки для TableName или ColumnName в моем запросе - он завершается ошибкой:

PostgreSQL ОШИБКА: 42P01:отношение «TableName» не существует

С двойными кавычками это работает.

Так возможно ли использовать Npgsql без двойных кавычек?Есть какой-нибудь флаг или что-то?

1 Ответ

0 голосов
/ 13 декабря 2018

Без двойных кавычек PostgreSQL переводит все идентификаторы в нижний регистр.Это поведение PostgreSQL, и оно не имеет ничего общего с Npgsql - последний просто передает ваш SQL, как вы его написали.Вы можете переключиться на строчные имена таблиц, в этом случае вам больше не нужны кавычки.

...