C# EF核心多对多关系标识插入错误

C# EF核心多对多关系标识插入错误,c#,entity-framework-core,C#,Entity Framework Core,我遵循本指南在API中实现了多对多关系 当我试图创建一个新的项目条目,其中包含一个要保存到ProjectAreas链接表的区域列表(从预定义列表中选择),我得到以下错误:当identity\u insert设置为OFF时,无法在表“Area”中为identity列插入显式值。 public class Project { [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)]

我遵循本指南在API中实现了多对多关系

当我试图创建一个新的项目条目,其中包含一个要保存到ProjectAreas链接表的区域列表(从预定义列表中选择),我得到以下错误:当identity\u insert设置为OFF时,无法在表“Area”中为identity列插入显式值。

public class Project
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public long ProjectId { get; set; }
        public string ProjectName { get; set; }
        public string ProjectDescription { get; set; }
        public DateTime StartDate { get; set; }
        public DateTime EndDate { get; set; }
        public DateTime CreateDate { get; set; }
        public User CreatingUser { get; set; }
        public bool Closed { get; set; }
        public User ClosingUser { get; set; }
        public DateTime CloseDate { get; set; }
        public Customer Customer { get; set; }
        public ICollection<ProjectArea> ProjectAreas { get; set; }
        public ICollection<ProjectCategory> ProjectCategories { get; set; }
    }

有人能告诉我我缺少什么吗?

将您的onmodel创建更改为以下内容:

 protected override void OnModelCreating(ModelBuilder modelBuilder)
 {
                modelBuilder.Entity<ProjectArea>()
                            .HasKey(projectArea => new 
                            {
                                 projectArea.ProjectId,
                                 projectArea.AreaId 
                            });
                modelBuilder.Entity<Project>()
                            .HasMany(c => c.ProjectArea)
                            .WithRequired()
                            .HasForeignKey(c => c.ProjectId);
                modelBuilder.Entity<Area>()
                            .HasMany(c => c.ProjectArea)
                            .WithRequired()
                            .HasForeignKey(c => c.AreaId);
}
模型创建时受保护的覆盖无效(ModelBuilder ModelBuilder)
{
modelBuilder.Entity()
.HasKey(projectArea=>new
{
projectArea.projectd,
projectArea.AreaId
});
modelBuilder.Entity()
.HasMany(c=>c.ProjectArea)
.WithRequired()
.HasForeignKey(c=>c.projectd);
modelBuilder.Entity()
.HasMany(c=>c.ProjectArea)
.WithRequired()
.HasForeignKey(c=>c.AreaId);
}

将您的onmodel创建更改为此:

 protected override void OnModelCreating(ModelBuilder modelBuilder)
 {
                modelBuilder.Entity<ProjectArea>()
                            .HasKey(projectArea => new 
                            {
                                 projectArea.ProjectId,
                                 projectArea.AreaId 
                            });
                modelBuilder.Entity<Project>()
                            .HasMany(c => c.ProjectArea)
                            .WithRequired()
                            .HasForeignKey(c => c.ProjectId);
                modelBuilder.Entity<Area>()
                            .HasMany(c => c.ProjectArea)
                            .WithRequired()
                            .HasForeignKey(c => c.AreaId);
}
模型创建时受保护的覆盖无效(ModelBuilder ModelBuilder)
{
modelBuilder.Entity()
.HasKey(projectArea=>new
{
projectArea.projectd,
projectArea.AreaId
});
modelBuilder.Entity()
.HasMany(c=>c.ProjectArea)
.WithRequired()
.HasForeignKey(c=>c.projectd);
modelBuilder.Entity()
.HasMany(c=>c.ProjectArea)
.WithRequired()
.HasForeignKey(c=>c.AreaId);
}

此错误表示您试图将值显式分配给数据库自动分配的列。此错误表示您试图将值显式分配给数据库自动分配的列。
public class DatabaseContext : DbContext
{
protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<ProjectArea>().HasKey(projectArea => new { projectArea.ProjectId, projectArea.AreaId });
            modelBuilder.Entity<ProjectArea>().HasOne(projectArea => projectArea.Project).WithMany(project => project.ProjectAreas).HasForeignKey(projectArea => projectArea.ProjectId);
            modelBuilder.Entity<ProjectArea>().HasOne(projectArea => projectArea.Area).WithMany(area => area.ProjectAreas).HasForeignKey(projectArea => projectArea.AreaId);
}
public void Add(Project entity)
        {
            databaseContext.Project.Add(entity);
            databaseContext.SaveChanges();
        }
 protected override void OnModelCreating(ModelBuilder modelBuilder)
 {
                modelBuilder.Entity<ProjectArea>()
                            .HasKey(projectArea => new 
                            {
                                 projectArea.ProjectId,
                                 projectArea.AreaId 
                            });
                modelBuilder.Entity<Project>()
                            .HasMany(c => c.ProjectArea)
                            .WithRequired()
                            .HasForeignKey(c => c.ProjectId);
                modelBuilder.Entity<Area>()
                            .HasMany(c => c.ProjectArea)
                            .WithRequired()
                            .HasForeignKey(c => c.AreaId);
}