最重要的是,我定义了这样的模型:
public class Category
{
public long CategoryId { get; set;}
public string CategoryName { get; set; }
public virtual ICollection<ContentInfo> Contents { get; set; }
}
Public class Article
{
public int ContentId { get; set; }
public string Content { get; set; }
[ForeignKey("Category")]
public long CategoryId { get; set; }
public virtual Category Category { get; set; }
}
使用自动迁移从模型生成数据库后,我将CategoryId的类型从“long”更改为“int”,并再次使用Automatic-Migration更新数据库。
这次抛出了一个异常,告诉我主键和外键引用了“CategoryId”列,因此迁移失败。如果我手动删除主键和外键,一切正常。但是我希望自动迁移为我做这个,是吗?
答案 0 :(得分:0)
我自己没有尝试这样的迁移,但我记得看到一个选项
公共类MYMigrationConfiguration:DbMigrationsConfiguration {
public MyMigrationConfiguration()
{
AutomaticMigrationsEnabled = true;
AutomaticMigrationDataLossAllowed = true; //have you tried this ?
}
否则,您可能需要为此类更改执行基于代码的迁移
答案 1 :(得分:0)
您可以使用“Sever Explore”并手动操作表结构,例如,删除键约束或删除整个表。并让EF生成全新的表定义。