. проект и .classpath файлы да. Мы однако не сохраняем наши настройки IDE в управлении версиями. Существуют некоторые плагины, которые не делают хорошего задания сохраняющихся настроек, и мы нашли, что некоторые настройки не были очень портативными от одной dev машины до следующего. Так, у нас вместо этого есть страница Wiki, которая выделяет шаги, требуемые для разработчика устанавливать их IDE.
Подход, который я использовал с Linq To SQL (который имеет ту же проблему), заключается в написании моих ручных изменений в XML-файле, чтобы я мог повторно применить их после повторного запуска процесса генерации. Вы можете создать библиотеку классов для редактирования файла edmx с помощью Linq To Xsd. См. http://www.adverseconditionals.com/2008/05/scripting-changes-to-linq-to-sql-dbml.html для получения более подробной информации
В дизайнере EF1 функция «Обновить модель из базы данных» не работает во многих ситуациях. Я работаю с EF1 около года. Проблемы с использованием конструктора EF1 стоили мне нескольких дней, поэтому, насколько я понимаю, лучше всего вручную редактировать XML EDMX вручную.
Для сложных вещей создайте новую модель, содержащую новые таблицы / столбцы / отношения / views, которые вы хотите, а затем скопируйте и вставьте XML из нового EDMX в существующий XML.
Некоторые вещи ломаются, когда вы используете «Обновить модель из базы данных»
Я уверен, что их еще больше, но этого было достаточно, чтобы я прекратил его использовать.
У меня есть несколько довольно больших моделей, которые я помогаю обновлять, и самое главное, что я заметил в команде «Обновить модель из мастера» в 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 стала по-настоящему страшной. Поэтому вместо этого мы просто прибегаем к методу «устранения ошибок».