Entity Framework创建的主键不会自动递增

时间:2014-04-05 20:38:39

标签: c# .net entity-framework migration ef-migrations

让我说明错误:

  

无法将值NULL插入列'Id',表中   'TCCDatabase.dbo.ProfessionalModels';列不允许空值。   INSERT失败。

尝试使用我的EF应用程序创建的数据库将n记录插入数据库时​​出现此错误。

我认为这是因为我的数据库Id列没有自动递增。

Identity field

我的问题是:为什么我的Id列不会自动递增?

我的一个模特:

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Web;

namespace TCCApplication.Models
{
    public class ProfessionalModel
    {
        public int Id { get; set; }

        public string Name { get; set; }

        [Column(TypeName = "DateTime2")]
        public DateTime BirthDate { get; set; }
        public int PhoneNumber { get; set; }
        public string Profession { get; set; }

        public UserAddressModel UserAddressModel { get; set; }
        public UserAccountModel UserAccountModel { get; set; }

        public ProfessionalModel() { }
    }
}

我的上下文类:

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity;
using System.Linq;
using System.Web;
using TCCApplication.Models;

namespace TCCApplication.EntityFramework
{
    public class TCCDatabase : DbContext
    {
        public DbSet<UserAccountModel> UserAccountContext { get; set; }
        public DbSet<ProfessionalModel> ProfessionalContext { get; set; }
        public DbSet<UserAddressModel> UserAddressContext { get; set; }

        public TCCDatabase()
        {}

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Entity<ProfessionalModel>().Property(a => a.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
            modelBuilder.Entity<UserAccountModel>().Property(a => a.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
            modelBuilder.Entity<UserAddressModel>().Property(a => a.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
        }

    }
}

1 个答案:

答案 0 :(得分:0)

根据this问题,自动增加ID似乎不是EF的工作,而是数据库的工作。应该递增的列需要设置为标识。

enter image description here