我应该把我的NHibernate SchemaExport方法放在哪里?
我应该在哪里放置我的NHibernate SchemaExport方法,当我决定重新创建数据库时该如何调用它?我应该把我的NHibernate SchemaExport方法放在哪里?
我应该在我的启动项目(一个asp.net mvc项目)中保留这个吗?我应该创建一个单独的控制台项目来导出我的模式吗?
我认为这些问题都来自这样一个事实,即我不希望每次Web应用程序启动时都运行模式导出。
我使用流利的nhibernate,如果这有所作为。
我会把它分解成单独的程序集;然后你可以在各种地方使用它(控制台应用程序,集成测试设置,安装程序等)。
作为一个想法:你可以把它放在一个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);
}
我会使用显式而不是忽略。这样你就不必在运行之前删除属性:) – mhenrixon 2010-08-23 19:10:33
谢谢Catz。我不知道有关Explict。我使用忽略作为额外的检查。 – 2010-08-23 22:55:05
模式导出不管理更改,它只是创建或删除。 – Paco 2010-08-18 19:34:18