Лучшие практики для создания схемы для производства с помощью NHibernate - PullRequest
1 голос
/ 15 июля 2009

Теперь я готов использовать NHibernate, чтобы сохранить мой уровень доступа к данным. До этого момента я использовал DDD, и я использую фальшивку для модульных тестов и для тестового сайта.

Я знаю, что могу использовать SchemaExport для модульных / интеграционных тестов моих конкретных хранилищ NHibernate, но как мне сгенерировать схему для использования на тестовом сайте?

Должен ли я создать в своих тестах специальный класс, который создает схему и вставляет статические данные, или мне следует создать схему при запуске сайта, если база данных не создана?

Ответы [ 3 ]

3 голосов
/ 24 июля 2009

Лично мне нравится использовать небольшое консольное приложение, которое загружает все сопоставления и выполняет SchemaExport, как показано ниже:

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

Это консольное приложение запускается как шаг сценария сборки, и файл сценария DDL затем выбирается WiX и включается в пакет MSI (который генерирует всю базу данных во время установки).

0 голосов
/ 02 сентября 2009

Для вашего полного сценария сборки я бы пошел с предложением Маркуса, просто для запуска ваших модульных тестов Я бы положил

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

в конфигурации приложения вашего тестового проекта - при каждом запуске всех тестов эта схема сбрасывается и воссоздается. Каждый модульный тест может добавлять данные, необходимые для тестирования.

0 голосов
/ 16 июля 2009

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

У меня есть похожий вопрос здесь на СТО

...