2016-06-29 5 views
-1

Я довольно новичок в пространстве NPOCO + PostgreSQL, так как я решил некоторое время оставаться в стороне от SQL Server.Запросы postgresql в NPOCO

Моя проблема заключается в том, что обычно пишут запросы, как это в NPOCO

database.Execute("select userId from Users"); 

И все отлично работает в мире SQL Server. Подойдя к PostGreSQL Мира, я наткнулся на запросы выглядит немного странно, как этот

SELECT "UserId", from dbo."Users" 

Теперь я хотел бы знать, как можно было бы использовать PostgreSQL запросов в NPOCO видим, что имена столбцов и таблиц должны быть в цитирует

заранее спасибо

ответ

0

имена столбцов и таблиц в Postgres имеют только быть в кавычках, если они включают в себя верхний регистр или специальные символы. То есть, по умолчанию анализатор SQL postgres заставит нижний регистр для всех некотируемых имен. Это делает вещи более удобными для интерактивного использования, но гораздо менее удобно, если у вас есть программное обеспечение, автоматически генерирующее имена таблиц и столбцов с прописными буквами, пробелами или эмози.

Другими словами, если имя таблицы равно users, а имя столбца - userid, тогда запрос select userid from users будет работать нормально. Только когда имя таблицы Users, вы должны начать цитирование.

Другая разница в sql, которую я замечаю, указывает схему dbo. Postgres поддерживает схемы (также известные как «пространства имен») и имеет для них путь поиска. Он также имеет стандартную «общедоступную» схему. По умолчанию search_path является:

"$user", public 

Который просто означает, что если вы select * from foo в качестве имени пользователя bob, Postgres будет проверять bob.foo, а затем public.foo и использовать то, что он находит первый в foo. Вы можете изменить search_path, если вы хотите:

SET search_path to dbo,public; 

И это позволит вам пропустить «dbo.» часть ваших запросов.

+0

Не согласен с моим опытом, я опустил все, и postgres говорит, что отношения «IdentityUser» не могут быть найдены –

+0

Если вы опустили все, то postgres не искали бы что-то со смешанным случаем, например «IdentityUser». Возможно ли, что ваш ORM автоматически использует смешанный случай? – jmelesky

Смежные вопросы