C # / Postgres / FluentNHibernate: настройка бросков npgsql NotSupportedException - PullRequest
2 голосов
/ 04 апреля 2011

Иногда я действительно начинаю задумываться о том, что происходит в моем исходном коде: Я пытаюсь подключиться к PostGres 9.0, используя npgsql 2.0.11.0, что, я уверен, я уже сделал, но сейчас моя программа выдает NotSupportedException , когда выполняет следующее:

ISessionFactory sf = Fluently.Configure()
                        .Database(PostgreSQLConfiguration.PostgreSQL82
                        .ConnectionString(c => c
                        .Host("localhost")
                        .Port(5432)
                        .Database("cw")
                        .Username("cw")
                        .Password("mypass")))
                        .Mappings(x => x.FluentMappings.AddFromAssemblyOf<MyMapping>())
                        .BuildSessionFactory();

Stacktrace выглядит довольно аккуратно: всего одна строка.

at NHibernate.Dialect.Dialect.GetDataBaseSchema(DbConnection connection) in d:\CSharp\NH\nhibernate\src\NHibernate\Dialect\Dialect.cs:Line 718.

Я попытался расшифровать это следующим образом:

ISessionFactory sf = Fluently.Configure()
                        .Database(PostgreSQLConfiguration.PostgreSQL82
                        .ConnectionString(c => c.Is("Server=localhost;Port=5432;Database=cw;User Id=cw;Password=myPass;")))
                        .Mappings(x => x.FluentMappings.AddFromAssemblyOf<CardTemplateMapping>())
                        .BuildSessionFactory();

Тем не менее, результат тот же. У кого-нибудь были подобные проблемы или - еще лучше - исправление?

Ответы [ 2 ]

4 голосов
/ 04 апреля 2011

Полагаю, у меня останется рекорд по большинству ответов.

Требуется, чтобы для свойства hbm2ddl.keywords было установлено значение none. Теперь это работает как шарм. Ура!

 .Database(PostgreSQLConfiguration.PostgreSQL82
                        .Raw("hbm2ddl.keywords","none"));
3 голосов
/ 04 апреля 2011

Смотрите, что вы уже нашли решение.Так что просто для справки:

"none" отключит любую операцию, касающуюся ключевых слов СУРБД.

И ключевые слова доступны для MsSQL, Oracle, Firebird, MsSqlCe, MySQL, SQLite, SybaseAnywhere.

Поскольку Postgress нет в списке, его необходимо установить на None.

Здесь есть информация о соме: Кавычки с именами столбцов с помощью NHibernate и PostgreSQL

...