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

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

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

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

Объект SchemaUpdate обеспечивает обновление схемы базы данных, создавая и выполняя ряд операторов SQL UPDATE (а также операторов ограничений), когда это void Execute(bool script, bool doUpdate) функция 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); } 

Проверьте SchemaUpdate .

  • JPA CascadeType.ALL не удаляет сирот
  • Получение соединения с базой данных в чистой настройке JPA
  • Каковы преимущества использования ORM?
  • Как создать таблицу объединений с аннотациями JPA?
  • Bypass GeneratedValue в спящем режиме (данные объединить не в db?)
  • В чем разница между persist () и merge () в Hibernate?
  • Entity Framework .Remove () vs. .DeleteObject ()
  • Как вы можете делать пейджинг с NHibernate?
  • Как следует использовать равенства и hash-код при использовании JPA и Hibernate
  • В чем разница между однонаправленными и двунаправленными ассоциациями JPA и Hibernate?
  • Лучшие бесплатные инструменты ORM для использования с .NET 2.0 / 3.5
  • Давайте будем гением компьютера.