14

为了简单起见。我在运行时将 Fluent NHibernate 的 Automapping 与 NHibernate 的 SchemaUpdate 结合使用。每次运行时,Automapper 都会为所有实体类创建映射,并且 SchemaUpdate 将架构应用到现有数据库。我很惊喜地发现它也能在空数据库上正常工作。到目前为止,它在开发环境中运行良好,并且使我能够相当快地响应错误。

我的问题是它是否足够可靠以留在生产代码中。显然,它不需要每次程序在生产环境中启动时都运行,但它对于增量产品更新很有用(尽管我不打算在产品发布后对域进行任何重大更改)。

(也许我真正的问题应该是结合使用这两个工具有多安全?)

更新

该应用程序有两个版本:独立桌面和多用户客户端/服务器。此外,由于业务领域(税务软件)的性质,我每年都可以从一个干净的数据库开始。

4

4 回答 4

13

为了能够在生产代码中运行,生产应用程序用来连接到您的数据库的帐户必须有权更改数据库架构。

无论 NHibernate 代码的质量/可靠性如何,仅此一项就应该阻止您使用这种方法。

于 2010-01-14T16:57:55.720 回答
9

我不会冒险的。行之有效的方法是在已从生产中恢复的登台服务器上运行它,然后使用数据库比较工具(例如 Red Gate)检查更改并生成脚本。

于 2010-01-26T17:43:32.643 回答
8

您可能要考虑 SchemaUpdate 将始终进行附加和非破坏性更改,从而导致陈旧的列和可为空的列,它们应该是不可为空的。

换句话说,绝对不能用于生产用途。

于 2010-01-26T17:32:32.407 回答
2

这取决于数据的重要性!我怀疑这对银行系统来说是个好主意。除了一件事,我对更新没有任何问题。有时它不能正确重命名。此外,与可以像这样修改架构的帐户连接是一种安全风险:)

于 2010-01-14T16:58:54.113 回答