我正在尝试使用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
的实例,以便以编程方式应用更新