NHibernate && обновление структуры БД
От: Interceptor Украина  
Дата: 10.03.10 20:05
Оценка:
Использую NHibernate, SQLite. Возник вопрос, а как решается ситуация когда есть SQLite база с данными, но в новой версии программы изменилась структура. К примеру удалили/добавили поля/таблицы. Как автоматически обновить (т.е. не потерять текущие данные в существующих таблицах и полях)?
Насколько я понимаю, это важно сделать до попытки программы доступиться к "некорректной" (старой версии) базы.

Помимо этого более сложный вопрос, можно ли указать какие поля в какие переносить (ситуация переименования поля)?
nhibernate sqlite структура бд
Re: NHibernate && обновление структуры БД
От: Lao Украина  
Дата: 10.03.10 20:40
Оценка:
Здравствуйте, Interceptor, Вы писали:

I>Использую NHibernate, SQLite. Возник вопрос, а как решается ситуация когда есть SQLite база с данными, но в новой версии программы изменилась структура. К примеру удалили/добавили поля/таблицы. Как автоматически обновить (т.е. не потерять текущие данные в существующих таблицах и полях)?


I>Помимо этого более сложный вопрос, можно ли указать какие поля в какие переносить (ситуация переименования поля)?


Вместе с обновлением программы нужно обновлять и базу (или при первом запуске новой версии программы). Например, написать скрипты, которые надо применить к старой БД, чтобы привести ее к новому виду.
Re[2]: NHibernate && обновление структуры БД
От: Interceptor Украина  
Дата: 10.03.10 22:56
Оценка:
Здравствуйте, Lao, Вы писали:

Lao>Вместе с обновлением программы нужно обновлять и базу (или при первом запуске новой версии программы). Например, написать скрипты, которые надо применить к старой БД, чтобы привести ее к новому виду.

К примеру у нас есть n версий базы. Писать скрипты для обновления с любой версии до текущей? Неужели в NHibernate ничего подобного не придумали? И скрипты как запускать? Через все тот же NHibernate выполняя обычные SQL запросы, или напрямую коннектиться к SQLite? Возможно у кого-то есть пример готового решения?
Re[3]: NHibernate && обновление структуры БД
От: Ziaw Россия  
Дата: 11.03.10 04:16
Оценка: 6 (1)
Здравствуйте, Interceptor, Вы писали:

I>К примеру у нас есть n версий базы. Писать скрипты для обновления с любой версии до текущей?

скрипты должны обновлять от v до v+1

I>Неужели в NHibernate ничего подобного не придумали?

какое отношение данная задача имеет к ORM?

I>И скрипты как запускать? Через все тот же NHibernate выполняя обычные SQL запросы, или напрямую коннектиться к SQLite? Возможно у кого-то есть пример готового решения?


http://flux88.com/blog/net-database-migration-tool-roundup/
Лично я пользуюсь migrator.net.
Re: NHibernate && обновление структуры БД
От: achmed Удмуртия https://www.linkedin.com/in/nail-achmedzhanov-9907188/
Дата: 11.03.10 05:35
Оценка:
Здравствуйте, Interceptor, Вы писали:

I>Использую NHibernate, SQLite. Возник вопрос, а как решается ситуация когда есть SQLite база с данными, но в новой версии программы изменилась структура. К примеру удалили/добавили поля/таблицы. Как автоматически обновить (т.е. не потерять текущие данные в существующих таблицах и полях)?

I>Насколько я понимаю, это важно сделать до попытки программы доступиться к "некорректной" (старой версии) базы.

Есть кое какая поддержка см. описание класса NHibernate.Tool.hbm2ddl.SchemaMetadataUpdater.
Можно автоматически создавать таблицы, добавлять столбцы, и другие объекты БД, но более сложные вещи, такие как данных данных, и прочие преобразования не поддерживаются.


На мой взгляд использовать этот инструмент целесообразно только во внутренних итерациях.

I>Помимо этого более сложный вопрос, можно ли указать какие поля в какие переносить (ситуация переименования поля)?


Для этого стоит писать SQL руками.
Re: NHibernate && обновление структуры БД
От: vecs Россия  
Дата: 12.03.10 09:56
Оценка:
Пожалуй, наиболее красиво и безопасно это можно сделать только при разработке в стиле "Model First" (см. например, ORM DataObjects).
Иначе к каждой новой версии нужно готовить и скрипты на апдейт базы и исполняемые модули. А потом, при запуске, проверять версии БД и программы на совместимость.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.