Ошибка Entity Framework: SqlException: невозможно вставить явное значение для столбца идентификаторов в таблице SiteCategory, когда для параметра IDENTITY_INSERT установлено значение OFF.

У меня есть три таблицы и .

имеет две колонки; один — индекс, а другой — индекс из; это означает, что между и существует связь «многие ко многим».

Когда я создаю каркас для своей базы данных в проектах .NET Core 8, каркас строит две модели: одну дляTagsа другой для и построителя моделей:

Ярлык

      modelBuilder.Entity<Tag>(entity =>
        {
            entity.HasKey(e => e.Indx);

            entity.Property(e => e.Tag1)
                .HasMaxLength(50)
                .HasColumnName("Tag");

            entity.HasMany(d => d.Categories).WithMany(p => p.Tags)
                .UsingEntity<Dictionary<string, object>>(
                    "TagCategory",
                    r => r.HasOne<SiteCategory>().WithMany()
                        .HasForeignKey("CategoryId")
                        .OnDelete(DeleteBehavior.ClientSetNull)
                        .HasConstraintName("FK_TagCategories_SiteCategory"),
                    l => l.HasOne<Tag>().WithMany()
                        .HasForeignKey("TagId")
                        .OnDelete(DeleteBehavior.ClientSetNull)
                        .HasConstraintName("FK_TagCategories_Tags"),
                    j =>
                    {
                        j.HasKey("TagId", "CategoryId");
                        j.ToTable("TagCategories");
                        j.IndexerProperty<int>("TagId").HasColumnName("TagID");
                        j.IndexerProperty<int>("CategoryId").HasColumnName("CategoryID");
                    });
        });

Категория сайта :

      modelBuilder.Entity<SiteCategory>(entity =>
        {
            entity.HasKey(e => e.Indx);

            entity.ToTable("SiteCategory");

            entity.Property(e => e.Category).HasMaxLength(18);
            entity.Property(e => e.ShowInSystem)
                .IsRequired()
                .HasDefaultValueSql("((1))");
        });

Я пытаюсь создать новый тег и добавить его, и у меня естьSiteCategoryиндекс, поэтому я хочу добавить его вTagCategoriesстол.

Моя функция:

      public bool addTagAndTagCategory(Tag tag, int? categoryID)
{
        try
        {
            var siteCat = db.SiteCategories.Where(cat => cat.Indx == categoryID).FirstOrDefault();
            siteCat.Tags.Add(tag);
            db.Add(tag);
            //var TagCategory = new Dictionary<string, object>
            //    {
            //        { "TagId", tag.Indx },
            //        { "CategoryId", siteCat.Indx }
            //    };
            //db.Attach(TagCategory);
            db.SaveChanges();
            var res = tag.Indx != 0 ? true : false;
            return res;
        }
        catch
        {
            throw;
        }
}

Я получаю эту ошибку:

SqlException: невозможно вставить явное значение для столбца идентификаторов в таблице SiteCategory, если для параметра IDENTITY_INSERT установлено значение OFF.

0 ответов

Другие вопросы по тегам