4

В настоящее время наше решение основано на базе данных Entity Framework Database. У нас есть шаблон T4, который генерирует классы репозитория из EDMX.Переключение с базы данных Entity Framework Сначала на первый код

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

Кажется, что с кодом First мы просто меняем модель и генерируем скрипты для изменения различных баз данных. Это кажется более простым, не требует ручного создания сценариев и снижения риска.

Таким образом, если мы делаем выключатель, это просто случай:

  • Moving ранее сгенерированные модели из EDMX в наших субъектах проекта к (все они в настоящее время в одном классе File), чтобы (предпочтительно отдельные) класс файлы в папке в Образованиях Project
  • Отрегулируйте T4 шаблон, чтобы подобрать модели из нового местоположения
  • больше не используя EDMX и обновления от базы данных
  • Когда мы хотим внести изменения в модели, просто изменяя (ранее, но больше не генерируемые) классов
  • Использование Code First Миграции для реализации изменений в Теста и другие базы данных

Наконец, как бы мы видим взаимосвязь между моделями? Есть ли способ создания диаграммы?

Спасибо,

Chris

+0

Если вы уже на производстве, я бы сначала использовал Db и использовал такой инструмент, как Redgate SQL Compare, чтобы переместить ваши изменения в db между средами. – Maess

+0

Спасибо, хотя еще не в Production. – Chris

+0

см. Это [сообщение] (http://devgush.com/2014/02/24/migrating-a-project-from-database-first-to-code-first/) –

ответ

0

Это то, что я сделал в прошлом. Со временем я пробовал много разных методов. В настоящее время я использую EF Reverse Poco Generator, чтобы разрешить внесение изменений в базу данных и отразить их в коде и изначально генерировать классы Model/Poco. Я также могу внести изменения в существующие классы вручную. Затем я генерирую миграцию для каждого изменения.

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

Если вы хотите увидеть структуру базы данных, вы можете использовать функцию «Диаграммы базы данных» в MS Sql, если это то, что вы используете. Мое впечатление, что вам предлагается использовать инструменты, отличные от структуры сущности, для визуализации связей базы данных или классов. Это позволяет команде EF сосредоточиться на коде базы данных вместо сложной интеграции пользовательского интерфейса с VS.

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

Все, что сказано, вы правы в своих заявлениях. Хотя я бы начал с EF Reverse Poco сгенерированных классов из существующего db, чтобы дать вам дополнительную гибкость. Направьте свой T4 на эти классы, используя отражение вместо синтаксического анализа XML (посмотрите на T4 Toolbox для управления выходными файлами), чтобы вы начали.

Отражение на сборках - это липкий бит, когда вы начинаете. Вы должны убедиться, что сборка EF/Poco скомпилирована, чтобы она могла быть загружена в память и отражена вашим T4. В редких случаях, в зависимости от того, как вы загружаете сборку, она может перестать обновлять сборку, поэтому вам необходимо перезапустить VS. Я сталкиваюсь с этим пару раз в месяц, поэтому для меня это не было проблемой. Как только я поднялся и работал, это имело смысл.

+0

только что увидел комментарий со ссылкой на сообщение в блоге. Я пробовал генератор VS, но предпочитаю EF Reverse Poco Generator для его гибкости, возможностей и того факта, что вы можете делать это снова и снова. – AC4