我应该在哪里放置我的NHibernate SchemaExport方法?

时间:2010-08-18 18:42:38

标签: nhibernate orm fluent-nhibernate change-management

我应该在哪里放置我的NHibernate SchemaExport方法,当我决定重新创建数据库时应该如何调用它?

我应该在我的启动项目(asp.net mvc项目)中留下这个吗?我应该创建一个单独的控制台项目来导出我的架构吗?

我认为这些问题都源于我不希望每次Web应用程序启动时都运行架构导出这一事实。

如果有所作为,我会使用流利的nhibernate。

3 个答案:

答案 0 :(得分:2)

我会把它分解成一个单独的集会;然后,您可以从各种地方使用它(控制台应用程序,集成测试设置,安装程序等)。

答案 1 :(得分:1)

作为一个想法:您可以将它放在ProjectInstaller中,该ProjectInstaller可选择接受命令行参数。因此,您不必为此提供额外的控制台应用程序。

答案 2 :(得分:1)

我个人使用两个测试(在这种情况下使用Nunit)来创建或更新数据库。在这两种情况下,我只生成脚本,因为我想要完全控制数据库何时创建或更新。

    [Test]
    [Ignore]
    public void Create_Database_Schema_From_MappingFiles()
    {
        Configuration cfg = new Configuration();
        cfg.Configure();
        var schema = new SchemaExport(cfg);

        schema.Create(true, false);
    }

    [Test]
    [Ignore]
    public void Update_an_existing_database_schema()
    {
        Configuration cfg = new Configuration();
        cfg.Configure();
        var update = new SchemaUpdate(cfg);
        update.Execute(true, false);
    }