如何使用代码首次迁移主键?

时间:2012-12-26 03:51:46

标签: entity-framework entity-framework-5 ef-migrations

最重要的是,我定义了这样的模型:

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”列,因此迁移失败。如果我手动删除主键和外键,一切正常。但是我希望自动迁移为我做这个,是吗?

2 个答案:

答案 0 :(得分:0)

我自己没有尝试这样的迁移,但我记得看到一个选项

公共类MYMigrationConfiguration:DbMigrationsConfiguration     {

    public MyMigrationConfiguration()
    {
        AutomaticMigrationsEnabled = true;
        AutomaticMigrationDataLossAllowed = true; //have you tried this ?


    }

否则,您可能需要为此类更改执行基于代码的迁移

答案 1 :(得分:0)

您可以使用“Sever Explore”并手动操作表结构,例如,删除键约束或删除整个表。并让EF生成全新的表定义。