2010-08-18 4 views
0

Где я должен поместить свой метод NHibernate SchemaExport и как его вызвать, когда я решу воссоздать базу данных?Где я должен поместить свой метод NHibernate SchemaExport?

Должен ли я оставить это в моем проекте запуска (проект asp.net mvc)? Должен ли я создать отдельный проект консоли только для экспорта моей схемы?

Я думаю, что все эти вопросы связаны с тем, что я не хочу, чтобы экспорт схемы запускался каждый раз, когда запускается веб-приложение.

Я использую беглый nhibernate, если это имеет значение.

+0

Экспорт схемы не управляет изменениями, он просто создает или падает. – Paco

ответ

2

Я бы включил его в отдельную сборку; вы можете использовать его из разных мест (консольное приложение, установка тестирования интеграции, установщик и т. д.).

1

Как идея: вы можете поместить его в ProjectInstaller, который необязательно принимает аргумент командной строки. Таким образом, для этого вам не потребуется дополнительное консольное приложение.

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); 
    } 
+2

Я использовал бы явный вместо игнорирования. Таким образом, вам не нужно удалять атрибут перед запуском :) – mhenrixon

+0

Thanks Catz. Я не знал об Эксликтоне. Я использовал игнорирование в качестве дополнительной проверки. –