代码之家  ›  专栏  ›  技术社区  ›  John_

nhibernate的构建模式有多好?

  •  2
  • John_  · 技术社区  · 16 年前

    我最近一直在看nhibernate,试图了解它的来龙去脉。我在几篇文章中注意到的一个问题是,使用子查询创建一个可测试的数据库。

    这个特殊的例子使用sqllite作为数据库。可以信任Bu建dSchema来创建数据库,还是最好以标准的方式创建自己的数据库模式?在我的例子中使用的是sqlservermanagementstudio。

    更新: 两个答案似乎都给出了有效的建议,我不会说这个问题有一个“答案”,所以我不会把一个特别的答案标记为确定的答案。不过,我投票赞成你们的建议。

    总体思路似乎是在数据库设计确定之前在早期开发中使用buildschema,然后在使用版本控制时转到create/alter sql脚本。

    2 回复  |  直到 16 年前
        1
  •  2
  •   malsmith    16 年前

    在项目开始时,让buildschema生成模式可能是可行的,但是一旦您启动并运行了一些关键质量(或者如果您向其他人发布了任何内容),您就需要将代码中的更改与模式中的更改协调起来。这不适用于buildschema方法。

    在我们的项目中,我们为需要数据库更改的每个变更集创建升级和降级脚本。我们还没有自动化这个过程,但是实践允许开发人员通过运行增量更改脚本来获得当前版本,并通过运行降级脚本返回到以前的版本。

    每个脚本都是自己的文件,可以包含对ddl和/或dml的多个更改以迁移数据等。

    我们只在有与以前版本不兼容的更改时才真正使用降级(这在我们的项目中很少见)。

        2
  •  2
  •   Todd Brooks    16 年前

    为了尽可能接近领域驱动的设计方法,我在开发期间使用nhibernate来构建我的模式。一旦应用程序达到了某种程度的稳定性(领域模型搅动已经大大减缓)或者达到了里程碑式的发布,我就切换到k.scott allen在他的博客上讨论的方法。

    斯科特艾伦的博客文章 database schema versioning

    ash tewari实现了一个使用nhibernate的变更脚本管理系统,该系统基于allen的博客文章。

    Ash Tewari DbUpdater