Ошибка при попытке программного применения Entig Framework Code First Migrations

Я пытаюсь использовать код первой миграции для Entity Framework 6.0

Это приложение для настольных компьютеров (WPF), которое в настоящее время используется на нескольких сайтах с собственной копией базы данных, поэтому запуск update-database из консоли диспетчера пакетов бесполезен.

До сих пор я использовал автоматические миграции, но теперь мне нужно применить более сложную миграцию, чем это позволит. Новая миграция применяется правильно, если

update-database -force 

используется опция (конечно, восстановление базы данных до ее предварительно обновленного состояния перед тестированием, что следует)

DbConfiguration (который работал с AutomaticMigrations) было настроено так:

[DbConfigurationType(typeof(ContextCeConfiguration))]
public class TrialDataContext : DbContext, ITrialDataContext
{
   ...
}

public class ContextCeConfiguration : DbConfiguration
{

    public ContextCeConfiguration()
    {
        SetProviderServices(
            SqlCeProviderServices.ProviderInvariantName,
            SqlCeProviderServices.Instance);
        SetDatabaseInitializer<TrialDataContext>(new DataContextInitialiser());
    }
}

class DataContextInitialiser : MigrateDatabaseToLatestVersion<TrialDataContext,TrialDataConfiguration>
{
}

internal sealed class TrialDataConfiguration : DbMigrationsConfiguration<BlowTrial.Domain.Providers.TrialDataContext>
{
    public TrialDataConfiguration()
    {
        AutomaticMigrationsEnabled = true;
    }
}

Я изменил класс DbMigrationsConfiguration на:

internal sealed class TrialDataConfiguration : DbMigrationsConfiguration<BlowTrial.Domain.Providers.TrialDataContext>
{
    public TrialDataConfiguration()
    {
        AutomaticMigrationsEnabled = false;
        DbMigrator migrator = new DbMigrator(this);
        if (migrator.GetPendingMigrations().Any())
        {
            migrator.Update();
        }
    }

Тем не менее, строка:

DbMigrator migrator = new DbMigrator(this);

Вызывает исключение:

ValueFactory попытался получить доступ к свойству Value этого экземпляра.

Может кто-нибудь, пожалуйста, предложите, как / где я должен создать экземпляр DbMigrator так что обновления могут быть применены программно

0 ответов

Другие вопросы по тегам