gpt4 book ai didi

c# - NHibernate 的 SchemaUpdate 对 PostgreSQL 数据库没有任何作用

转载 作者:太空狗 更新时间:2023-10-30 01:25:17 26 4
gpt4 key购买 nike

我使用 NHibernate 3.0 和 Postgres 9.0.4。当我尝试 new SchemaUpdate(cfg).Execute(scriptAction, true);什么都没发生。没有异常,没有 SQL 输出(即使提供的 Action<string> scriptAction 也没有被调用)并且没有创建表。如果我改用 SchemaExport,一切都会像魅力一样工作。所以我假设我的配置和映射是正确的。我阅读了有关 NHibernate 2.something.something 和 Postgres 8.something 的组合以及 SchemaUpdate 的使用的问题。谁能确认 SchemaUpdate 仍然不能用于更新版本的 Postgres 和 NHibernate,或者更好,谁能指导我解决我的问题?

提前致谢。

编辑:

正如我最近发现的那样,实际上也有异常(exception)。 SchemaUpdate 不会抛出它们,而是将它们存储在其 Exceptions 属性中。我得到两个 System.NotSupportedExceptionNHibernate.Dialect.Dialect.GetDataBaseSchema(DbConnection connection)没有额外的数据,这表明 SchemaUpdate 不适用于 PostgreSQL,但如果是这种情况,肯定有人已经发现了。我都试过了,.PostgreSQLDialect.PostgreSQL82Dialect无济于事。

最佳答案

你能升级到最新版本吗?看起来 DataProvider/Dialects 组件在 NHibernate 3.2.0 GA 中针对 Postgre 进行了重大升级。

来自 the release notes :

Build 3.2.0.GA (rev6000)
=============================

** Improvement
* [NH-2571] - Full PostgreSQL Support

不确定这是否有帮助。如果您使用的是 Fluent(最新版本适用于 NH 3.1.0),您仍然不走运。

更新:您使用了哪个 Fluent 源?我只是 downloaded from Github它在 NH 3.2.0 上编译得很好。事实上,the NHibernate section已于 8 月 11 日更新,消息为“已将 NHibernate 3.x 程序集更新为 3.2”。

由于依赖于 NH 3.1.0 的外部组件,我还不能移动到新版本。我所做的是使用 SchemaExport.Create( Action<string>, false )将 DDL 写入文本文件。我知道已经更改的映射,并且我手动修改数据库以匹配 NH 认为它应该看起来的样子。这很丑陋,但如果您只在极少数情况下进行少量更改,它是可行的。

关于c# - NHibernate 的 SchemaUpdate 对 PostgreSQL 数据库没有任何作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7260752/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com