Can't auto-generate IDENTITY with AddRange in Entity Framework

后端 未结 4 1555

I don\'t know if it\'s an Entity Framework\'s desing choice or a wrong approach on my behalf, but whenever I try to AddRange entities to a DbSet I can\'t seem to get the aut

4条回答
  •  一个人的身影
    2021-01-07 22:07

    I'm using Database First in EF 6, and after trying for a period of time, I find a possible solution.

    First, Check your Table in the Database, Ensure that you defined the 'ID' column as an auto-increment primary key field, which can be declared by using something like

    ID int IDENTITY(1,1) PRIMARY KEY,
    

    when creating your table. Some related information can see here1 or here2.

    or you can check the data Properties in MSSQL IDE like:

    Second, Set the 'ID' column's StoreGeneratedPattern as Identity, you can do it by open the edmx file in Visual Studio, right click on the Data Column in table and select Properties, and StoreGeneratedPattern setting is in the Properties Window :

    Some related article see here.

    After complete things above, using EF AddRange, ID will auto increment and all works great.

    public class Entity 
    {
        public long Id { get; set; }
        public string Field { get; set; }
    }
    
    var entities = new Entity[] 
    {
        new Entity() { Field = "A" },
        new Entity() { Field = "B" },
    };
    
    _dbContext.Entities.AddRange(entities);
    

提交回复
热议问题