我最近一直在关注NHibernate,并试图了解这些细节。我在一些文章中注意到的一件事是使用BuildSchema来创建一个可测试的数据库。
特定示例使用SqlLite作为数据库。可以信任BuildSchema来创建数据库,还是最好以标准方式创建自己的数据库模式?在我的情况下使用SQL Server Management Studio。
更新 这两个答案似乎都提供了有效的建议,我不会说这个问题有一个“答案”所以我不会将一个特定的答案标记为最终答案。不过,我已经投了你们两个建议。
总体思路似乎是在数据库设计结算之前在早期开发中使用BuildSchema,然后在使用版本控制时转移到创建/更改SQL脚本。
答案 0 :(得分:2)
对于项目的开始,使用BuildSchema生成的模式可能是切实可行的,但是一旦您启动并运行了一些临界质量(或者如果您已经向其他人发布了任何内容),则需要协调代码中的更改。架构中的更改。这不适用于buildschema方法。
在我们的项目中,我们为每个需要更改数据库的变更集创建升级和降级脚本。我们没有自动化该过程,但该实践允许开发人员通过运行增量更改脚本来获取当前版本,并通过运行降级脚本返回到先前版本。
每个脚本都是自己的文件,可能包含多个DDL和/或DML的更改以迁移数据等。
如果有与以前版本不兼容的更改,我们只会真正使用降级(这些在我们的项目中很少见。)
答案 1 :(得分:2)
在尝试尽可能接近域驱动的设计方法时,我使用NHibernate在开发期间构建我的架构。一旦应用程序达到某种程度的稳定性(域模型流失速度已大大减慢)或达到里程碑版本,我就切换到方法K. Scott Allen在他的博客上讨论。
ķ。斯科特艾伦关于database schema versioning
的博客文章Ash Tewari已经实施了一个更改脚本mgmt系统,该系统使用NHibernate,该系统基于Allen关于此的博客文章。
Ash Tewari的DbUpdater