ASP.NET Core DB-first Entity Framework Core can not auto increment primary key

Viewed 1112

I have an ASP.NET Core project. I am using the database first approach with SQL Server and generated my models using EF Core.

I want the primary key to be auto incremented. Everything seems to work fine on the first entry in which it defaults my primary key (PimId) to 0. However, on the second insertion, the primary key remains 0.

My onModelCreate function

modelBuilder.Entity<ImportPim>(entity =>
        {
            entity.HasKey(e => e.PimId);
            entity.ToTable("Import_PIM");

            entity.Property(e => e.PimId)
                .HasColumnName("PIM_Id")
                .ValueGeneratedNever();

            entity.Property(e => e.CliId).HasColumnName("CLI_Id");

            entity.Property(e => e.PimAccountNumber)
                .HasColumnName("PIM_AccountNumber")
                .HasMaxLength(50)
                .IsUnicode(false);

This was generated by EF Core, I have tried changing ValueGeneratedNever() to ValueGeneratedOnAdd() but I get a saving error in SQL Server.

Any suggestions on how to do?

2 Answers

ValueGeneratedOnAdd() should works. If not, make sure that you set Identity for PimId in your table in SQL Server.

    entity.Property(e => e.PimId)
        .HasColumnName("PIM_Id")
        .ValueGeneratedOnAdd();

You can set it as identity (Auto increment) like this:

modelBuilder.Entity<ImportPim>().Property(entity => entity.PimId).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);

Related