更改Code First数据库表以使PK不是标识列?

时间:2014-05-05 18:57:45

标签: asp.net-mvc code-first ef-migrations

我有一个使用Code First数据迁移的MVC应用程序,现在,在制作表之后很久,我想将PK列更改为不是自动生成的Identity列。但是我得到的印象是我不能在没有CodeFirst以某种方式删除表的情况下执行此操作(这将很难给出所有依赖项)并重新创建它?真的希望我不必这样做。

我尝试过的事情:

    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int AssessmentID { get; set; }

,这在OnModelCreating()中:

modelBuilder.Entity<Assessment>()
            .Property(e => e.AssessmentID)
            .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);

进行添加迁移时,它不会添加任何内容。我尝试手动添加此行,但它不会更新db:

AlterColumn("dbo.Assessment", "AssessmentID", c => c.Int(nullable: false, identity:false));

1 个答案:

答案 0 :(得分:0)

我的结论是,这确实是不可能的。与下面的帖子一样,没有SQL Alter命令来更改列上的Identity状态,因此CodeFirst无法创建一个。我计划删除所有迁移文件和rescaffold(事情在其他方面变得混乱)。

Remove Identity from a column in a table