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 自动迁移未执行的主要内容,如果未能解决你的问题,请参考以下文章

EF架构~codeFirst从初始化到数据库迁移

多次传递的标准核心数据迁移不起作用

typeORM 未发现数据库架构更改 - 无法生成迁移。要创建新的空迁移,请使用“typeorm migration:create”命令

带有 dnx 项目的 EF 6

Heroku:Django Migration 版本未在部署中运行

typeorm:migration create on New Project Does Not Recognize Entities - “未发现数据库架构更改 - 无法生成迁移。”