尝试以编程方式应用实体框架代码优先迁移时出错

时间:2014-03-02 08:17:25

标签: entity-framework ef-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 个答案:

没有答案