DropCreateDatabaseIfModelChanges в базе данных.SetInitializer - PullRequest
1 голос
/ 05 сентября 2011

Я использую шаблон кода в рамках структуры V4.1. Одна вещь, с которой я столкнулся, которая выглядит очень странно, это то, что всякий раз, когда вы вносите какие-либо изменения в модель, база данных просто удаляется и создается новая. Это очень неопрятно, потому что каждый раз удаление и воссоздание базы данных не идеальное решение. Все мои тестовые данные и все теряется. Я знаю, что есть метод с именем Seed, и вы можете поместить туда записи тестовых данных. Тем не менее, может быть несколько сотен записей тестов, и не представляется возможным поместить каждую запись в метод семени. Есть ли другая альтернатива этому? Я бы вообще не использовал code-first, но обязательно использовать его в проекте.

Ответы [ 2 ]

2 голосов
/ 05 сентября 2011

Нет, в настоящее время нет другого метода, и сам EF, вероятно, никогда не будет поддерживать ничего, кроме удаления / воссоздания.Команда ADO.NET выбрала способ использования отдельного инструмента для обновления базы данных под названием Миграции .Миграции в настоящее время доступны только как CTP = они не подходят для реального использования, но для тестирования и сбора отзывов обратно в команду EF.

В качестве обходного пути вы можете использовать скрипт заполнения внешних данных и вызывать его из seed -быть намного легче для обслуживания.

2 голосов
/ 05 сентября 2011

Вы можете настроить EF, чтобы попытаться изменить вашу базу данных, только если она еще не существует.

Database.SetInitializer<YourDataContext>(new CreateDatabaseIfNotExists<YourDataContext>());
...