EF6 Migration 自动迁移未执行
Posted
技术标签:
【中文标题】EF6 Migration 自动迁移未执行【英文标题】:EF6 Migration automatic Migration is not executed 【发布时间】:2020-10-08 07:55:46 【问题描述】:您好,我正在尝试使用 EF6 代码优先方法。我了解迁移的基本概念以及 Code First 的工作原理,但不知何故这不起作用。我自己编写了以下迁移类,而不是通过 Add-Migration:
public override void Up()
CreateTable("dbo.Todo", column => new
Id = column.Int(nullable:false, identity:true),
Value = column.String(nullable: true),
CreatedAt = column.DateTime(nullable: false, defaultValueSql: "GETUTCDATE()")
).PrimaryKey(t => t.Id);
public override void Down()
DropTable("dbo.Todo");
但是up方法没有调用我的配置类如下:
internal sealed class Configuration : DbMigrationsConfiguration<DataProviderCodeFirst.Entities.TodoContext>
public Configuration()
AutomaticMigrationsEnabled = true;
AutomaticMigrationDataLossAllowed = false;
ContextKey = nameof(TodoContext);
protected override void Seed(DataProviderCodeFirst.Entities.TodoContext context)
这是我的数据上下文:
public TodoContext(): base("SomeConnectionString")
public TodoContext(string connectionString)
: base(connectionString)
Database.CreateIfNotExists();
Database.SetInitializer(new MigrateDatabaseToLatestVersion<TodoContext, Configuration>());
Database.Initialize(false);
protected override void OnModelCreating(DbModelBuilder modelBuilder)
base.OnModelCreating(modelBuilder);
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
public virtual DbSet<Todo> Todos get; set;
我的实体类
public class Todo
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id get; set;
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public DateTime CreatedAt get; set; = DateTime.Now;
public string Value get; set;
它创建数据库和表,键设置为标识,但 CreatedAt 未设置为计算,并且在调试中不调用 Up() 函数。
先谢谢了
【问题讨论】:
【参考方案1】:您必须运行“启用迁移”,然后运行“添加迁移”命令,然后运行“更新数据库”命令。
【讨论】:
以上是关于EF6 Migration 自动迁移未执行的主要内容,如果未能解决你的问题,请参考以下文章
typeORM 未发现数据库架构更改 - 无法生成迁移。要创建新的空迁移,请使用“typeorm migration:create”命令
Heroku:Django Migration 版本未在部署中运行
typeorm:migration create on New Project Does Not Recognize Entities - “未发现数据库架构更改 - 无法生成迁移。”