2012-07-03 2 views
0

я получаю сообщение об ошибке при попытке выполнить команду EF 4.3.1 адд-Миграции:Entity Framework ошибки 4.3.1 дополнения миграции: «модель поддержав контекст изменился»

«Модель подпирают ... контекст изменился с момента создания базы данных ».

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

1) Начните с базой данных, которая была создана EF Code First (то есть, уже содержит таблицу _MigrationHistory с только строкой InitialCreate).

2) Модель данных и базы данных кода приложения синхронизирована в данный момент (база данных была создана CF при запуске приложения).

3) Поскольку у меня есть четыре DBC-контекста в моем проекте «Services», я не запускал команду enable-migrations (она не обрабатывает контексты multipe). Вместо этого я вручную создал папку Migrations в проекте Services и файле Configuration.cs (в конце этого сообщения). [Я думаю, что я где-то это читал)

4) Когда база данных еще не изменена, и приложение остановлено, я использую редактор VS EDM, чтобы внести тривиальные изменения в мою модель данных (добавьте одно свойство в существующий объект), и заставить его генерировать новые классы (но не изменять базу данных, очевидно). Затем я перестраиваю решение, и все выглядит нормально (но не удалять базу данных или перезапускать приложение, конечно).

5) я запускаю следующую команду (PMC, где "App" является именем одного из классов в Configuration.cs):

PM> надстройку миграция App_AddTrivial -conf основе App -project Services -startup Услуги -verbose

... который не выполнен с ошибкой «Модель ... изменилась. Рассмотрите возможность использования первой ошибки переноса ...».

Что я делаю неправильно? И кто-нибудь еще видит иронию в инструменте, который говорит мне использовать то, что я уже пытаюсь использовать ;-)

Каковы правильные шаги для настройки решения, начиная с базы данных, созданной EF CF ? Я видел сообщения, в которых говорилось, что начальная миграция выполняется с -ignorechanges, но я пробовал это, и это не помогает. На самом деле, я провел весь DAY-тестирование различных перестановок, и ничего не работает!

Должно быть, я делаю что-то действительно глупое, но я не знаю, что!

Благодаря,

DadCat

Configuration.cs:

пространства имен mynamespace { внутренний запечатаны класс App: DbMigrationsConfiguration { общественное приложение() { AutomaticMigrationsEnabled = ложь; MigrationsNamespace = "Services.App.Repository.Миграции "; }

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) 
    { 

    } 
} 

}

+1

Что именно вы пытаетесь достичь? Переходы EF не поддержка обработки нескольких контекстов для единой базы данных - исключение использования «Enable-Migrations» не меняет ее. Также создание классов с помощью EDM-дизайнера - это не первый код. –

ответ

0

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

Смежные вопросы