Sql server 使用EF迁移将现有DB列添加到模型

Sql server 使用EF迁移将现有DB列添加到模型,sql-server,entity-framework,entity-framework-migrations,Sql Server,Entity Framework,Entity Framework Migrations,在数据库中创建了一个列,,它有一个默认的GETDATE(),因此在插入时自动分配。此列当前不在模型类中。当我尝试将属性添加到模型类时: [Required, DatabaseGenerated(DatabaseGeneratedOption.Computed)] public DateTime Created { get; set; } 然后运行更新数据库,结果显示消息: 无法更新数据库以匹配当前模型,因为存在 已禁用挂起的更改和自动迁移。要么写下 对基于代码的迁移的挂起模型更改或启用自动 迁

在数据库中创建了一个列
,它有一个默认的
GETDATE()
,因此在插入时自动分配。此列当前不在模型类中。当我尝试将属性添加到模型类时:

[Required, DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public DateTime Created { get; set; }
然后运行
更新数据库
,结果显示消息:

无法更新数据库以匹配当前模型,因为存在 已禁用挂起的更改和自动迁移。要么写下 对基于代码的迁移的挂起模型更改或启用自动 迁移。将DbMigrationsConfiguration.AutomaticMiggrationsEnabled设置为 true以启用自动迁移。您可以使用添加迁移 命令将挂起的模型更改写入基于代码的迁移

当我尝试允许自动迁移时,EF尝试创建DB列
Created
,但失败了,因为该列已经存在


是否有方法更正模型类?

使用
-IgnoreChanges
创建空迁移并应用于数据库

Add-Migration AddsCreatedProperty -IgnoreChanges
Update-Database
您还需要为从迁移中引导的任何其他数据库添加列。因此,在空迁移中,在
Up
方法中添加sql语句

SQL(@"
    IF NOT EXISTS (
      SELECT *  FROM   sys.columns  WHERE  
        object_id = OBJECT_ID(N'[dbo].[MyTable]')  AND name = 'Created'
    )
    BEGIN
        ALTER TABLE MyTable
        ADD Created DATETIME NOT NULL DEFAULT (GETDATE());
    END
");