Отключить двойные кавычки имени таблицы в FluentNhibernate

Я переключаю свое приложение на Postgresql, все таблицы в моей схеме в нижнем регистре, и когда я делаю запрос с NHibernate, он добавляет двойные кавычки к имени таблицы, которое в сопоставлениях находится в PascalCase и вызывая сбой запроса, сообщая мне, что таблица не существует.

Я мог бы легко перейти ко всем классам сопоставлений и изменить метод таблицы на строчные, например, сменить 'Table ("UserAccount")' на 'Table ("useraccount")', но я бы предпочел не делать этого. .

Мне было интересно, есть ли способ указать nhibernate не использовать двойные кавычки для таблицы в запросах, чтобы он нашел ее правильно.

Я пробовал с этим:

PostgreSQLConfiguration.Standard.Raw("hbm2ddl.keywords","none").ConnectionString(x => x.Is(_connectionString));

и это не сработало. Я бы почти сказал nhibernate, чтобы он не беспокоился о case, но имел проблемы с этим с помощью postgres.


person Jose R. Cruz    schedule 08.06.2011    source источник


Ответы (1)


Вы можете изменить это поведение с помощью IClassConvention от Fluent NHibernate. Я думаю, что нет другого способа сделать это в соответствии с этим вопросом

person xelibrion    schedule 08.06.2011
comment
О, люди, большое спасибо ... Да, есть простой способ сделать это, nhibernate уже имеет предопределенные соглашения для таблицы, поэтому мне просто нужно было добавить эту строку в конфигурацию сеанса: m.FluentMappings.AddFromAssemblyOf<UserAccount>().Conventions.Add(Table.Is(x => x.TableName.ToLower()); Большое спасибо - person Jose R. Cruz; 08.06.2011