Подтвердить что ты не робот

Как обновить схемы таблиц базы данных с помощью генерации схемы NHibernate?

Я пытаюсь выяснить, как использовать конфигурацию NHibernate с сопоставлением для обновления схем таблиц, а не отбрасывать и воссоздавать их.

В настоящее время я использую NHibernate.Tool.hbm2ddl.SchemaExport obj с FluentNHibernate для создания схемы базы данных для базы данных mysql. Хотя я не могу сказать, что это огромная проблема, всякий раз, когда я вызываю SchemaExport.Execute в базе данных, она собирается удалить все таблицы и затем воссоздать их.

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

4b9b3361

Ответ 1

Объект SchemaUpdate обеспечивает обновление схемы базы данных, создавая и выполняя ряд операторов SQL UPDATE (а также операторов ограничений), когда он void Execute(bool script, bool doUpdate)  вызывается функция. Класс SchemaUpdate находится в пространстве имен NHibernate.Tool.hbm2ddl, который можно найти в файле Nhibernate.dll.

SchemaUpdate упоминается в главе 15 руководства по набору инструментов nhibernate 1.0.2, здесь (раздел 15.1.5).

"Часто задаваемые вопросы по NHibernate" (ссылка теперь истек) - более полный пример использования SchemaUpdate:

[Test]
public void Update_an_existing_database_schema()
{
    _cfg = new Configuration();
    _cfg.Configure();
    _cfg.AddAssembly(Assembly.LoadFrom("DataLayer.dll"));
    var update = new SchemaUpdate(_cfg);
    update.Execute(true, false);
}