Код Entity Framework сначала не создает таблицу

#entity-framework #entity-framework-6

#entity-framework #entity-framework-6

Вопрос:

Я использую существующую базу данных, и я сопоставил одну из таблиц как сущность (поскольку мне нужно было сопоставить внешний ключ).

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

Как бы я это сделал?

Комментарии:

1. Это что-то подобное DbModelBuilder.Ignore<T> , что вы хотели бы? ссылка на msdn

Ответ №1:

Вы должны создать пустую миграцию в качестве первой миграции с -IgnoreChanges флагом, чтобы Entity Framework могла получить снимок существующей базы данных.

Итак, из-за использования:

 Add-Migration InitialMigration -IgnoreChanges
  

и это создаст пустую миграцию, но обновит метаданные Entity Framework, позволяющие существующим таблицам существовать и не затрагиваться миграциями.

Также следует упомянуть, что соглашения об именовании, которые ожидает Entity Framework, и ваша схема базы данных могут отличаться. Возможно, вам потребуется вручную настроить внешние ключи с помощью Fluent API.

Комментарии:

1. Спасибо, это мне очень помогло.

Ответ №2:

Я специально не проверял EF 6, но я думаю, что поведение EF по умолчанию заключается в том, что когда база данных существует, она предполагает, что вся модель готова и, следовательно, не будет создавать таблиц. Если вы хотите, чтобы ваш код инициализации сначала создавал таблицы с кодом, используйте код инициализации для подготовки данных. Посмотрите здесь :

http://www.entityframeworktutorial.net/code-first/seed-database-in-code-first.aspx