Ответ 1
В любом случае вам придется синхронизировать EDM (модель данных сущности) и БД. Вы должны убедиться, что EDM полностью совместим с вашей базой данных. Если нет, это не сработает, независимо от того, является ли это кодом First или вы используете модель.
Единственное отличие состоит в том, что:
- с помощью конструктора вы можете сделать это графически и легко установить свойства, имена столбцов и т.д.
- используя Code First, вы должны установить эти свойства, имена столбцов, типы данных и т.д., используя соглашения, Fluent API или атрибуты
С первым кодом единственное преимущество заключается в том, что после синхронизации модели Code First (см. "Code First также EDM, но несколько ограниченный" ) и базы данных вы можете начать использовать Migrations и разработать свою модель, используя которые впоследствии облегчают применение изменений в производственной БД (всякий раз, когда выпускается новая версия). С графической моделью вы не можете использовать миграции и должны обновлять Db непосредственно из Visual Studio или создавать сценарии SQL DDL вручную.
Code First также является EDM, но с несколькими отсутствующими функциями
Не имеет значения, используете ли вы код First или нарисуете модель, будет создана EDM (модель данных сущности). Если вы привыкли разрабатывать базы данных, возможно, вам будет удобнее использовать конструктор. Остерегайтесь заметок на EF Core (бывший EF7) ниже!.
Однако EDM, сгенерированный Code First, имеет несколько ограничений, которые у дизайнера нет.
Самые выдающиеся ограничения Code First - это то, что в дизайнере вы можете легко отображать определенные пользователем функции из BD, например скалярные и табличные значения, и хранимые процедуры. С Code First существует гораздо больше ограничений.
в EF 6.1 большинство этих ограничений исчезает, но все же немного сложно сделать сопоставления. (На самом деле, на сегодняшний день, 2014, там только образец и простой пакет Nuget о том, как это сделать.).
По состоянию на март 2017 года не Core EF, то есть EF Core 6.1, больше не обновляется. MS, вероятно, решит ошибки, если они появятся, но не ожидайте дальнейших изменений
Изменения в EF Core, fomer EF7 (по состоянию на 2015 год)
В настоящее время Microsoft разрабатывает EF 7, но также поддерживает EF 6.x. Текущая рекомендация состоит в том, чтобы продолжать использовать EF 6 в течение некоторого времени, потому что EF 7 недостаточно зрел.
EF 7 разрабатывается с нуля для преодоления унаследованного объекта ObjectContext, который создает ужасные ограничения для реализации новых функций. Но он реализует наиболее широко используемый DbContext с небольшими изменениями. Итак, если вы используете DbContext, у вас будет легкий путь миграции к входящим новым версиям EF.
Однако есть очень важное изменение: в EF Core (прежний EF7) модель EDM исчезает в пользу моделей Code First. Итак, если вы хотите использовать сегодняшнюю технологию и обеспечить легкое обновление до новых версий, не используйте First First или Database First: используйте Code First. Для Microsoft есть важные причины для принятия этого решения: Code First работает намного лучше в командной среде с контролем версий и позволяет работать с Migrations. В любом случае tou все еще может видеть модель графическим способом (с Power Toools) или использовать сторонний инструмент для создания модели с помощью дизайнера (некоторые из существующих коммерческих решений будут поддерживать это для EF7).
ПРИМЕЧАНИЕ. Почему в командной среде намного лучше Code First? Если несколько членов команды изменяют модель, гораздо проще объединить изменения в нескольких файлах кода, чем в большом XML файле, с большим количеством строк, которые определяют модель. Также гораздо труднее понять изменения между версиями в этом XML файле hugh. Для средних или больших проектов я рекомендую вам перейти на Code First ASAP