3

ときどき、自分のソースコードで何が起こっているのか本当に疑問に思うことがあります。npgsql 2.0.11.0 を使用して PostGres 9.0 に接続しようとしてます。以下 :

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 は非常に見やすく、1 行しかありません。

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

2 に答える 2

5

私は、最も自己回答された質問の記録を保持することになると思います。

hbm2ddl.keywords プロパティを none に設定する必要がありました。今では魅力のように機能します。乾杯!

 .Database(PostgreSQLConfiguration.PostgreSQL82
                        .Raw("hbm2ddl.keywords","none"));
于 2011-04-03T21:01:14.777 に答える
4

すでに解決策を見つけていることを確認してください。だから、いくつかの背景のために:

「なし」は、RDBMS キーワードに関するすべての操作を無効にします。

また、キーワードは、MsSQL、Oracle、Firebird、MsSqlCe、MySQL、SQLite、SybaseAnywhere で使用できます。

Postgress はリストにないため、None に設定する必要があります。

ここにいくつかの情報があります: Quoting column names with NHibernate and PostgreSQL

于 2011-04-03T21:12:14.613 に答える