2011-04-03 88 views
2

有时我真的开始想知道我的源代码中发生了什么: 我试图使用npgsql 2.0.11.0连接到PostGres 9.0,我确信我已经做了,但现在,我的计划将引发NotSupportedException异常,因为它步入了以下内容:C#/ Postgres/FluentNHibernate:配置npgsql抛出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(); 

堆栈跟踪是很整齐看:只有一条线路。

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(); 

不过,结果是一样的。任何人有类似的问题或 - 更好 - 修复?

回答

4

我想我最终会为最自我回答的问题持有记录。

它需要将hbm2ddl.keywords属性设置为无。现在它像一个魅力。 干杯!

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

看到你已经找到了解决方案。所以只是为了一些背景:

“none”将禁用任何有关RDBMS关键词的操作。

关键字可用于MsSQL,Oracle,Firebird,MsSqlCe,MySQL,SQLite,SybaseAnywhere。

由于Postgress不在列表中,它必须设置为None。

这里有这方面的信息:Quoting column names with NHibernate and PostgreSQL

相关问题