Как обновить схемы таблиц базы данных с помощью генерации схемы NHibernate?
Я пытаюсь выяснить, как использовать конфигурацию NHibernate с сопоставлением для обновления схем таблиц, а не отбрасывать и воссоздавать их.
В настоящее время я использую NHibernate.Tool.hbm2ddl.SchemaExport
obj с FluentNHibernate для создания схемы базы данных для базы данных mysql. Хотя я не могу сказать, что это огромная проблема, всякий раз, когда я вызываю SchemaExport.Execute
в базе данных, она собирается удалить все таблицы и затем воссоздать их.
Что было бы круче, если бы я мог просто обновить существующие структуры таблиц, сохраняя данные там, где это возможно. Но я действительно не хочу использовать коммерческий продукт или генератор кода, потому что мне не нравится генерация кода в целом, и мне не нужно этого достаточно, чтобы я мог заплатить за него. Поэтому, надеюсь, любой ответ будет держать эти оговорки в виду.
Ответы
Ответ 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);
}
Ответ 2
Отъезд SchemaUpdate.