Question

I have an MVC application using Code First data migrations and now, long after making a table, I'd like to change the PK column to not be an auto-generated Identity column. But I get the impression I just can't do this without having CodeFirst delete the table somehow (which will be hard given all the dependencies) and recreate it? Really wishing I didn't have to do that.

What I've tried:

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

and this in OnModelCreating():

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

When doing add-migration, it doesn't add anything. I tried manually adding this line but it does not update the db:

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

Solution

I've concluded that this is indeed not possible. Like the post below says, there is no SQL Alter command to change the Identity status on a column, so CodeFirst can't create one. I plan to remove all migration files and rescaffold (things have gotten messy in other ways).

Remove Identity from a column in a table

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top