2016-02-19 5 views
1

, если использовать fluentmigrator с Postgres он генерирует код, как этотFluentMigrator Postgres (Npgsql) цитирует

CREATE TABLE public."Sample"... 

из-за этого я должен использовать двойные кавычки для каждой последовательности

SELECT * FROM public.Sample <--- Error 
SELECT * FROM public."Sample" <--- OK 

Как я могу отключить двойной Цитатник?

подробное описание informating https://github.com/schambers/fluentmigrator/issues/687

+1

Самый простой способ - избегать идентификаторов смешанного случая. (идентификаторы несущественны в SQL, если не указано) – joop

ответ

1

Я имел взгляд на это сам, и вопрос заключается в том, что FluentMigrator имеет котировки жестко закодированные в основном ..... в соответствии с текущей версией.

Единственный путь вперед - загрузить и изменить исходный код самостоятельно.

Его довольно хорошо сделано, вам нужно искать класс PostgresQuoter.cs, например, и переопределять некоторые базовые методы цитирования.

Я не полностью модифицировал весь проект, работает только на первом проходе и надеюсь завершить остальные изменения позже на этой неделе. Если это не слишком хаки, я посмотрю, не может ли вы дать вам файлы для изменения.

0

Это действительно проблема только в том случае, если вы не используете строчный регистр. Postgres чувствителен к регистру. Postgresql обрабатывает идентификаторы без учета регистра, если они не цитируются (он фактически сворачивает их в нижний регистр внутри), и случай чувствителен при цитировании. Используя всегда строчные буквы, вы в безопасности. Однако, если вы используете camelCase или PascalCase, это означает, что вам всегда нужно быть последовательным: либо кодовые идентификаторы всегда, либо никогда.

Повторно, если вы называете вещи строчными буквами в качестве соглашения, у вас не будет проблемы с двойной цитатой. Если вы используете прописные буквы, вы застреваете с проблемой двойной кавычки. Надеюсь это поможет. Удачи вам в вашем проекте. :)

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