Какова лучшая практика, когда схема базы данных изменяется в платформе объекта?

. проект и .classpath файлы да. Мы однако не сохраняем наши настройки IDE в управлении версиями. Существуют некоторые плагины, которые не делают хорошего задания сохраняющихся настроек, и мы нашли, что некоторые настройки не были очень портативными от одной dev машины до следующего. Так, у нас вместо этого есть страница Wiki, которая выделяет шаги, требуемые для разработчика устанавливать их IDE.

8
задан Jey Geethan 14 December 2009 в 11:56
поделиться

3 ответа

Подход, который я использовал с Linq To SQL (который имеет ту же проблему), заключается в написании моих ручных изменений в XML-файле, чтобы я мог повторно применить их после повторного запуска процесса генерации. Вы можете создать библиотеку классов для редактирования файла edmx с помощью Linq To Xsd. См. http://www.adverseconditionals.com/2008/05/scripting-changes-to-linq-to-sql-dbml.html для получения более подробной информации

4
ответ дан 5 December 2019 в 20:16
поделиться

В дизайнере EF1 функция «Обновить модель из базы данных» не работает во многих ситуациях. Я работаю с EF1 около года. Проблемы с использованием конструктора EF1 стоили мне нескольких дней, поэтому, насколько я понимаю, лучше всего вручную редактировать XML EDMX вручную.

Для сложных вещей создайте новую модель, содержащую новые таблицы / столбцы / отношения / views, которые вы хотите, а затем скопируйте и вставьте XML из нового EDMX в существующий XML.

Некоторые вещи ломаются, когда вы используете «Обновить модель из базы данных»

  1. Заменяет любые ручные изменения, которые вы сделать в XML.
  2. Невозможно справиться со значениями по умолчанию в база данных - настаивает на ваших сущностях предоставить значения для полей, которые заполняется значением по умолчанию.
  3. Создает смехотворные составные ключи для просмотров и даже если вы исправили вид иметь разумные ключи, это комментирует ваш правильный версия и создает новую версию используя свои странные ключи!
  4. Не устанавливает все атрибуты для столбцы, добавленные в таблицы, которые он устанавливает когда вы создаете таблицу из царапина (например, Unicode, MaxLength, FixedLength)

Я уверен, что их еще больше, но этого было достаточно, чтобы я прекратил его использовать.

2
ответ дан 5 December 2019 в 20:16
поделиться

У меня есть несколько довольно больших моделей, которые я помогаю обновлять, и самое главное, что я заметил в команде «Обновить модель из мастера» в EF v1, это то, что она не удаляет НИЧЕГО из CSDL. SSDL может быть на 100% правильным (и так оно и есть в большинстве случаев). Так что есть два способа справиться с этим:

1) Измените / запишите изменения XML. 2) Внесите изменения вручную в дизайнере.

Я очень старался, чтобы метод 1 работал. Это непросто, но, по сути, лучший совет, который я могу вам дать, - это сравнить SSDL с версией CSDL, и вы подойдете очень близко (если вы говорите только о столбцах).

Хуже всего, когда вы переименовываете таблицу. Тогда все отношения FK, которые были построены для этой таблицы в CSDL, по существу дублируются (потому что переименование - это действительно удаление / создание, но помните, что мастер ничего не удаляет в CSDL: -))

Итак, самый простой совет, который у меня есть. Внесите изменения в мастере обновления. Затем скомпилируйте только проект .edmx (не закрывая конструктор). После этого просто дважды щелкните каждое сообщение об ошибке и «устраните ошибку».

Устранение ошибки зависит от сценария. Если это дублированные столбцы, Щелкните правой кнопкой мыши неправильное имя столбца и нажмите кнопку «Удалить». Если это плохой FK, щелкните его правой кнопкой мыши и удалите.

Я помню, как кто-то на codeplex пытался сделать мастер обновления с помощью шаблонов T4 (то, что они сейчас используют с .NET v4). Я просто думаю, что это НАМНОГО сложнее, чем кажется на первый взгляд. Я пытался это сделать, и когда я дошел до таких сценариев, как 1 .. * * .. 1 множественность, xml и код в генераторе t4 стали действительно страшными. Поэтому вместо этого мы просто прибегаем к методу «устранения ошибок».

1 кратность xml и кода в генераторе t4 стала по-настоящему страшной. Поэтому вместо этого мы просто прибегаем к методу «устранения ошибок».

1 кратность xml и кода в генераторе t4 стала по-настоящему страшной. Поэтому вместо этого мы просто прибегаем к методу «устранения ошибок».

2
ответ дан 5 December 2019 в 20:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: