【问题标题】:Best practices to generate schema for production with NHibernate使用 NHibernate 生成生产模式的最佳实践
【发布时间】:2009-07-15 15:29:07
【问题描述】:

我现在准备好使用 NHibernate 来持久化我的数据层访问。在那之前我一直使用 DDD,并且在单元测试和测试站点中使用 fake。

我知道我可以使用 SchemaExport 对我的 NHibernate 具体存储库进行单元/集成测试,但我应该如何生成用于测试站点的架构?

我应该在我的测试中创建一个特殊的类来创建架构并插入静态数据,或者如果没有创建数据库,我应该在网站启动时生成架构吗?

【问题讨论】:

    标签: c# asp.net nhibernate asp.net-2.0


    【解决方案1】:

    我个人喜欢使用一个小型控制台应用程序,它可以加载所有映射并执行 SchemaExport,如下所示:

    new SchemaExport(config).Execute(ddlScript => {
        using (var writer = new StreamWriter(fileName, true))
        {
            writer.Write(ddlScript);
            writer.Flush();
        }
    }, false, false);
    

    此控制台应用程序作为构建脚本的一个步骤运行,然后 DDL 脚本文件被 WiX 拾取并包含在 MSI 包中(在安装时生成整个数据库)。

    【讨论】:

      【解决方案2】:

      作为一个简单的场景,您可能会错过使用单元测试。只需创建名为 CreateSchema 的单元测试,它将执行模式导出。然后在运行其他测试之前运行它。

      我也有类似的问题here on STO

      【讨论】:

      • 我的问题不是为测试创建架构,而是为生产站点创建架构。
      【解决方案3】:

      对于您的完整构建脚本,我会接受 Markus 的建议,只运行您的单元测试 我会放

      <property name="hbm2ddl.auto">create-drop</property>

      在您测试项目的应用程序配置中 - 每次运行所有测试时都会删除并重新创建您的架构。每个单元测试都可以添加需要测试的数据。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-05-28
        • 1970-01-01
        • 2021-12-31
        • 1970-01-01
        • 2019-12-05
        • 1970-01-01
        • 2011-07-11
        • 2010-12-10
        相关资源
        最近更新 更多