C# / Postgres / FluentNHibernate:配置npgsql时出现NotSupportedException异常

3
有时我真的开始怀疑我的源代码里发生了什么事情: 我正在尝试使用npgsql 2.0.11.0连接到PostGres 9.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个回答

5

我猜我会成为最多自问自答问题记录的保持者。

它需要将hbm2ddl.keywords属性设置为none。现在它运行得很好。 干杯!

 .Database(PostgreSQLConfiguration.PostgreSQL82
                        .Raw("hbm2ddl.keywords","none"));

4

看到您已经找到了一个解决方案。这里是一些背景:

"none"将禁用与关系型数据库管理系统关键字相关的任何操作。

而Keywords可用于MsSQL、Oracle、Firebird、MsSqlCe、MySQL、SQLite、SybaseAnywhere。

由于PostgreSQL不在列表中,因此必须设置为None。

这里有一些信息:使用NHibernate和PostgreSQL引用列名


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接