C# NHibernate';s SchemaUpdate在PostgreSQL数据库上不执行任何操作
我使用NHibernate 3.0和Postgres 9.0.4。当我尝试一个C# NHibernate';s SchemaUpdate在PostgreSQL数据库上不执行任何操作,c#,nhibernate,postgresql,C#,Nhibernate,Postgresql,我使用NHibernate 3.0和Postgres 9.0.4。当我尝试一个newschemaupdate(cfg).Execute(scriptAction,true)什么也没发生。没有异常,没有SQL输出(即使提供的操作scriptAction也不会被调用),也没有创建表。如果我改用SchemaExport,一切都会像符咒一样工作。所以我假设我的配置和映射是正确的。 我读到关于NHibernate2.something.something和Postgres8.something的结合以及S
newschemaupdate(cfg).Execute(scriptAction,true)代码>什么也没发生。没有异常,没有SQL输出(即使提供的操作scriptAction
也不会被调用),也没有创建表。如果我改用SchemaExport,一切都会像符咒一样工作。所以我假设我的配置和映射是正确的。
我读到关于NHibernate2.something.something和Postgres8.something的结合以及SchemaUpdate的使用的问题。有人能确认SchemaUpdate对于Postgres和NHibernate的更新版本仍然不可用,或者更好,有人能指导我找到问题的解决方案吗
提前谢谢
编辑:
事实上也有例外,正如我最近发现的。SchemaUpdate不会抛出它们,而是将它们存储在其Exceptions属性中。
我在NHibernate.dialogue.dialogue.GetDataBaseSchema(DbConnection连接)
中得到了两个System.NotSupportedException
,没有额外的数据,这表明SchemaUpdate不能用于PostgreSQL,但如果是这种情况,肯定有人已经发现了。我尝试了这两种方法,.postgresqldialtential
和.postgresql82dialential
,但都没有成功。我几乎是自己回答了这个问题
对nhibernate版本3.0.0GA的源代码进行简要检查后发现,.postgresqldialten
确实没有覆盖基类“GetDataBaseSchema(DbConnection)
方法,因此抛出系统。不支持异常
,并且不存在Postgres方言的IDataBaseSchema
实现者。奇怪的是,NHibernate文档没有提到这个小细节。你能升级到最新版本吗?看起来数据提供商/方言组件在NHibernate 3.2.0 GA中为Postgre进行了重大升级
发件人:
构建3.2.0.GA(rev6000)
============================================================
**改进
*[NH-2571]-完全支持PostgreSQL
不确定这是否有帮助。如果您使用的是Fluent(最新版本适用于NH3.1.0),那么您仍然运气不佳
更新:您使用了哪种Fluent源?我只是用NH3.2.0编译的很好。事实上,它是在8月11日更新的,消息是“将NHibernate 3.x程序集更新为3.2”
由于依赖NH3.1.0的外部程序集,我还不能移动到新版本。我所做的是使用SchemaExport.Create(Action,false)
将DDL写入文本文件。我知道已更改的映射,我手动修改数据库以匹配NH认为应该是什么样子。这很难看,但如果您在极少数情况下只有一些更改,它是可行的。您使用HBM或FluenetHibernate映射,NHibernate 3.2可以解决您的问题
但在NHibernate 3.2中使用了大量的代码映射,同样的问题也出现了。不幸的是,我不能。Fluent 1.2似乎只支持NHibernate 3.1。我无法流畅地针对NHibernate 3.2进行编译,但我认为由于GetDataBaseSchema(DbConnection)在本版本中被重写,使用3.2将解决问题。谢谢你的回答。谢谢你提到异常在exceptions属性中。如果它真的把它们扔了会更好!