实体框架自动迁移主键

时间:2013-06-25 11:05:21

标签: sql-server-2008 entity-framework ef-migrations

我继承了一个sql server数据库和一个ASP.Net MVC 4 Web应用程序,它使用 Entity Framework 5.0 Code First 自动迁移。但是,以前的开发人员似乎忘了在其中一个表中添加主键。我现在正尝试使用自动迁移来执行此操作,但是,它不起作用,也没有错误,只是似乎忽略了命令。

表格就像这样

 public int CourseDateHistoryID { get; set; }
 public int CourseDateID { get; set; }
 public int Event { get; set; }
 //public string testProp{ get; set; }

我的映射就是这样尝试在 CourseDateHistoryID

上创建主键
this.HasKey(t => t.CourseDateHistoryID);

this.Property(t => t.CourseDateHistoryID)
            .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);

我认为连接字符串可能是错误的,所以我尝试使用自动迁移添加一个名为 testProp 的dumby字符串属性,但这很好。

对于为什么我不能使用自动迁移将 CourseDateHistoryID 设置为PK,有人会有任何想法吗?

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

您可以尝试使用Update-Database -verbose命令手动更新数据库。它应该显示它正在应用的迁移以及它遇到的错误。

或者为什么不使用Add-Migration命令添加另一个迁移并在那里手动添加主键,例如:

public partial class AddPrimaryKey : DbMigration
{
    public override void Up()
    {
        AddPrimaryKey(table: "dto.table", column: "CourseDateHistoryID", name: "PK_CourseDateHistoryID");
    }

    public override void Down()
    {
        DropPrimaryKey(table: "dto.table", name: "PK_CourseDateHistoryID");
    }
}

希望这有帮助。