Обновление базы данных для настольного приложения (исправления) - PullRequest
1 голос
/ 02 января 2012

Интересно, что вы используете для обновления клиентской базы, когда ваша программа исправлена?

Давайте посмотрим на этот сценарий:

  1. У вас есть настольное приложение (.net, Entity Framework), которое использует компактную базу данных sql server.
  2. Вы выпускаете новую версию вашего приложения, которое использует расширенную базу данных.
  3. Пользователь загружает патч с измененными файлами
  4. Как обновить базу данных?

Интересно, как вы делаете этот процесс? У меня есть некоторое представление, но я думаю, что более опытные люди могут дать мне лучшее и испробованное решение или совет.

Ответы [ 3 ]

1 голос
/ 02 января 2012

Вам нужна инфраструктура миграции .

Существуют библиотеки OSS, такие как FluentMigrator

Entity Framework Code First также получит свою собственную инфраструктуру миграции, но она все еще находится в бета-версии:

0 голосов
/ 02 января 2012

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

Один забавный сценарий - вы успешно «обновляете» приложение и базу данных, а затем по какой-либо причине по эксплуатации клиент восстанавливает предыдущую версию базы данных, или если выВы находитесь на частом цикле патчей, вы должны делать каждый патч по порядку или можете их наверстать.Хотите ли вы иметь дело только с обновлением приложения или только базы данных по-другому?

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

Пара вещей, на которые стоит обратить внимание.Две базы данных, одна для статических данных «только для чтения», а другая для более динамичных данных.Обновление статических данных может быть просто восстановлением из ресурса в пакете обновления.

Другой способ заключается в том, сколько вы можете сделать с метаданными, хранящимися в таблицах базы данных.Например, версия на основе xsd для описания ваших объектов вместо конкретного класса.Это относится к вашей базе данных только для чтения, теперь вы обновили код и приложение с помощью восстановления и, возможно, некоторых преобразований.

Множество путей, просто помните, что «пользователи» всегда найдут способ заставить вас выглядетькак eejit, делая то, что вы никогда не думали, что они будут делать.

Чем сложнее вы делаете систему, тем больше шансов на вышесказанное.

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

0 голосов
/ 02 января 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...