Я получаю сообщение об ошибке при попытке запустить команду EF 4.3.1 add-migrations:
«Модель, поддерживающая контекст ..., изменилась с момента создания базы данных».
Вот одна последовательность, которая вызывает ошибку (хотя я пробовал, наверное, дюжину вариантов, и все они терпят неудачу)...
1) Начните с базы данных, созданной EF Code First (т. е. уже содержащей таблицу _MigrationHistory только со строкой InitialCreate).
2) На данный момент модель данных кода приложения и база данных синхронизированы (база данных была создана CF при запуске приложения).
3) Поскольку у меня есть четыре DBContexts в моем проекте «Службы», я не запускал команду «enable-migrations» (она не обрабатывает несколько контекстов). Вместо этого я вручную создал папку «Миграции» в проекте «Службы» и файл «Configuration.cs» (приведен в конце этого поста). [Кажется, я читал это где-то в посте]
4) Поскольку база данных еще не изменена и приложение остановлено, я использую редактор VS EDM, чтобы внести тривиальное изменение в мою модель данных (добавить одно свойство к существующему объекту) и создать новые классы (но не изменить база данных, очевидно). Затем я перестраиваю решение, и все выглядит нормально (но, конечно, не удаляйте базу данных и не перезапускайте приложение).
5) Я запускаю следующую команду PMC (где «Приложение» — это имя одного из классов в Configuration.cs):
PM> add-migration App_AddTrivial -conf App -project Services -startup Services -verbose
... который завершается с ошибкой "Модель... изменилась. Рассмотрите возможность использования Code First Migrations...".
Что я делаю неправильно? И кто-нибудь еще видит иронию в инструменте, говорящем мне использовать то, что я уже пытаюсь использовать ;-)
Как правильно настроить решение, начиная с базы данных, созданной EF CF? Я видел сообщения о запуске первоначальной миграции с параметром -ignorechanges, но я пробовал это, и это не помогает. На самом деле, я провел весь ДЕНЬ, тестируя различные перестановки, и ничего не работает!
Должно быть, я делаю что-то очень глупое, но я не знаю что!
Спасибо,
ПапаКот
Конфигурация.cs:
namespace mynamespace {внутренний запечатанный класс App: DbMigrationsConfiguration {public App() { AutomaticMigrationsEnabled = false; MigrationsNamespace = "Services.App.Repository.Migrations"; }
protected override void Seed(.Services.App.Repository.ModelContainer context)
{
}
}
internal sealed class Catalog : DbMigrationsConfiguration<Services.Catalog.Repository.ModelContainer>
{
public Catalog()
{
AutomaticMigrationsEnabled = false;
MigrationsNamespace = "Services.Catalog.Repository.Migrations";
}
protected override void Seed(Services.Catalog.Repository.ModelContainer context)
{
}
}
internal sealed class Portfolio : DbMigrationsConfiguration<Services.PortfolioManagement.Repository.ModelContainer>
{
public Portfolio()
{
AutomaticMigrationsEnabled = false;
MigrationsNamespace = "Services.PortfolioManagement.Repository.Migrations";
}
protected override void Seed(Services.PortfolioManagement.Repository.ModelContainer context)
{
}
}
internal sealed class Scheduler : DbMigrationsConfiguration<.Services.Scheduler.Repository.ModelContainer>
{
public Scheduler()
{
AutomaticMigrationsEnabled = false;
MigrationsNamespace = "Services.Scheduler.Repository.Migrations";
}
protected override void Seed(Services.Scheduler.Repository.ModelContainer context)
{
}
}
}
Enable-Migrations
ничего не меняет. Кроме того, создание классов с помощью конструктора EDM — это не первый код. - person Ladislav Mrnka   schedule 04.07.2012