#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