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

问题描述:

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

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

我认为这些问题都来自这样一个事实,即我不希望每次Web应用程序启动时都运行模式导出。

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

+0

模式导出不管理更改,它只是创建或删除。 – Paco 2010-08-18 19:34:18

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

作为一个想法:你可以把它放在一个ProjectInstaller中,它可以选择一个命令行参数。所以你不必为此只有一个额外的控制台应用程序。

我个人使用两个测试(在这种情况下使用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); 
    } 
+2

我会使用显式而不是忽略。这样你就不必在运行之前删除属性:) – mhenrixon 2010-08-23 19:10:33

+0

谢谢Catz。我不知道有关Explict。我使用忽略作为额外的检查。 – 2010-08-23 22:55:05