【发布时间】:2016-12-15 17:56:37
【问题描述】:
我在项目中首先使用 EF 6 和代码
我尝试使用“启用迁移”命令来理解。
DbContext 和 Initializer 示例采用最简单的形式,如下所示。
当我给出命令 'enable-migrations'
package-manager 控制台输出如下错误:
无法更新数据库以匹配当前模型,因为存在待处理的更改并且自动迁移已禁用。将挂起的模型更改写入基于代码的迁移或启用自动迁移。将 DbMigrationsConfiguration.AutomaticMigrationsEnabled 设置为 true 以启用自动迁移。
但如果我不从 MyDbContext 构造函数调用InitializeDatabase();method,则不会发生错误,也不会出现数据导入或种子方法不会运行。
只有数据库创建。
如果我使用InitializeDatabase() 方法,我想了解此错误的原因和含义是什么。
谢谢
public class MyDbContext : DbContext
{
public MyDbContext():base("TestDb")
{
Database.SetInitializer(new DbContextInitializer());
InitializeDatabase();
}
protected virtual void InitializeDatabase()
{
if (!Database.Exists())
{
Database.Initialize(true);
}
}
public DbSet<TestModel> TestModels { get; set; }
}
public class DbContextInitializer : CreateDatabaseIfNotExists<MyDbContext>
{
protected override void Seed(MyDbContext context)
{
base.Seed(context);
context.TestModels.Add(new TestModel() {
Name = "Lorem",
Surname = "Ipsum"
});
}
}
【问题讨论】:
标签: c# .net entity-framework entity-framework-migrations