我继承了一个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,有人会有任何想法吗?
感谢您的帮助。
答案 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");
}
}
希望这有帮助。