使用NHibernate为生产生成模式的最佳实践

时间:2009-07-15 15:29:07

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

我现在准备使用NHibernate来保持我的数据层访问。我使用DDD直到那一点,我使用假的单位测试和测试网站。

我知道我可以使用SchemaExport进行NHibernate具体存储库的单元/集成测试,但是如何生成用于测试站点的模式呢?

我应该在我的测试中创建一个特殊的类来创建模式并插入静态数据,还是应该在创建数据库时在网站启动时生成模式?

3 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:0)

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

我有一个类似的问题here on STO

答案 2 :(得分:0)

对于完整的构建脚本,我会考虑Markus的建议,仅运行单元测试 我会把

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

在您测试项目的app配置中 - 每次运行所有测试时,这将删除并重新创建您的模式。每个单元测试都可以添加测试所需的数据。