有时我真的开始想知道我的源代码中发生了什么: 我正在尝试使用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();
仍然,结果是一样的。任何人都有类似的问题,或者 - 甚至更好 - 修复?
答案 0 :(得分:4)
我想我最终会记录最自我回答的问题。
它需要将hbm2ddl.keywords属性设置为none。现在它就像一个魅力。 干杯!
.Database(PostgreSQLConfiguration.PostgreSQL82
.Raw("hbm2ddl.keywords","none"));
答案 1 :(得分:3)
看到您已找到解决方案。所以只是为了一些背景:
“none”将禁用有关RDBMS KeyWords的任何操作。
关键字可用于MsSQL,Oracle,Firebird,MsSqlCe,MySQL,SQLite,SybaseAnywhere。
由于Postgress不在列表中,因此必须将其设置为None。
这里有som信息:Quoting column names with NHibernate and PostgreSQL