Fluent NHibernate入门

时间:2010-04-21 15:15:28

标签: fluent-nhibernate

我正在尝试使用Fluent NHibernate,我有几个问题。我发现文档缺乏。

  1. 据我所知,Fluent NHibernate / NHibernate允许您自动生成数据库模式。人们通常只对Test / Dev数据库这样做吗?或者可以为生产数据库做什么?如果它可以用于生产,那么如何确保每次运行应用程序时都不会泄露生产数据?

  2. 一旦创建了数据库模式,并且您有新的表/列/等生成数据。需要添加到测试和/或生产数据库,人们是否允许NHibernate执行此操作,还是应该手动完成?

  3. Fluent NHibernate上有什么非常好的文档吗? (请不要指向我的wiki,因为在跟随“你的第一个项目”代码自己构建它时,我得到了运行时错误,因为他们忘记告诉你添加引用。不酷。)

  4. 谢谢, 安迪

2 个答案:

答案 0 :(得分:3)

我几个月来一直在使用Fluent NHibernate Automapping。我绝不是专家,但可以抓住你的问题......

FNH Automapping确实从POCO类创建了DB模式,包括其他对象的列表(这就是我首先选择NHibernate的原因)。

当你更改模式时,你必须重新运行自动化,遗憾的是它会丢弃整个数据库。在我的情况下,这不是一个大问题,因为我正在导入现有的二进制数据文件,所以每次架构更改时我都必须重新导入我的数据。我已经读过NHibernate提供了一些数据迁移支持,但没有经验。 (顺便说一下,亚力学进行数据迁移,但它的自动化功能要简单得多 - 至少在我几个月前进行评估时)

FNH文件是我的一个小小的烦恼 - 他们甚至没有在方法名称等方面添加Intellisense帮助(但是当你指出它时它们变得非常虚伪 - 问我怎么知道!)我做了一个我尽可能多地编辑维基,但还有更多可以在那里完成的工作。最好的方法是从一个工作实例开始(即 this one from Nikola Malovic,如果(何时!)遇到麻烦,请将问题发布到support form。总的来说,我发现FNH社区非常有帮助,并且能够解决我所有的困难。他们还修复了我发现的一些错误。

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

答案 1 :(得分:1)

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

  1. 是的,模式的创建非常适合生产使用(Schema Export)。当你这样做取决于你。例如,您可以通过安装程序创建数据库。您不应删除现有数据库,但这是您应用程序的决定。

  2. 我不明白这个问题。您是否需要将现有数据库升级到新的数据库模式?遗憾的是,您需要自己实现这一点。 NH对此无能为力,因为它对您的数据和您所做的更改非常具体。还有一个Schema Update或类似的东西,不建议用于生产。

  3. 我不使用Fluent,所以我在这里帮不了。