开始使用Fluent NHibernate

3

我正在尝试使用Fluent NHibernate,有一些问题需要解答。我发现文档不够清晰易懂。

  1. 我了解到Fluent NHibernate / NHibernate可以自动生成数据库架构。人们通常只对测试/开发数据库这样做吗?还是可以用于生产数据库?如果可以用于生产环境,如何确保您不会每次运行应用程序时都删除生产数据?

  2. 一旦数据库架构已经创建,并且您拥有生产数据,当需要向测试和/或生产数据库添加新表/列等时,人们允许NHibernate执行此操作,还是应该手动完成?

  3. 有没有非常好的Fluent NHibernate文档?(请不要指向维基,因为在按照"Your first project"代码构建时,我由于他们忘记告诉你添加引用而收到运行时错误。)

谢谢, Andy

2个回答

3
我已经使用Fluent NHibernate Automapping几个月了。虽然我不是专家,但可以尝试回答你的问题...
FNH Automapping确实可以从POCO类创建DB模式,包括其他对象的列表(这也是我选择NHibernate的原因)。
当您更改模式时,必须重新运行自动映射,这会删除整个数据库,不幸的是。在我的情况下,这不是一个大问题,因为我正在导入现有的二进制数据文件,所以每次模式更改时,我只需要重新导入我的数据。我已经阅读过NHibernate中提供了一些数据迁移支持,但没有相关经验。(顺便说一句,Subsonic会进行数据迁移,但它的自动映射功能要简陋得多-至少在我几个月前评估时是这样的)
FNH文档是我最讨厌的事情之一 - 他们甚至没有在方法名称等上添加Intellisense帮助。(但当你指出这一点时,他们会变得非常愤怒 - 问我怎么知道!)当我能够时,我对维基进行了几次编辑,但还有很多工作要做。最好的方法是从一个工作示例(即this one from Nikola Malovic)开始,如果(当!)遇到问题,请在support form上发布问题。总的来说,我发现FNH社区非常乐于助人,并且已经解决了我找到的一些错误。

总的来说,使用FNH对我的项目来说是一个巨大的胜利 - 强烈推荐!


谢谢你的建议。我现在放弃使用Fluent NHibernate了 - 它太令人沮丧了,而且据我所知,EF已经达到了相当成熟的水平。 - Andy
很遗憾听到这个。我一开始也觉得很沮丧,但现在非常感激我坚持下来了。几个月前我简要地研究过EF,但口碑不佳,我无法确定它是否具有自动映射功能。也许VS 2010的发布会修复人们报告的主要问题。 - Tom Bushell

1

我不使用Fluent,但我可以帮助您使用经典的NHibernate。

  1. 是的,为生产使用创建模式(Schema Export)非常推荐。您可以自行决定何时执行此操作。例如,您可以通过安装程序创建数据库。您不应删除现有数据库,但这是您的应用程序决策。

  2. 我不理解这个问题。您是否需要将现有数据库升级到新的数据库模式?这很遗憾,您需要自己实现。NH在这方面无能为力,因为它非常特定于您的数据和所做的更改。还有一种类似于Schema Update的东西,但不建议在生产中使用。

  3. 我不使用Fluent,所以无法提供帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接