Ошибка Entity Framework: SqlException: невозможно вставить явное значение для столбца идентификаторов в таблице SiteCate ⇐ C#
Ошибка Entity Framework: SqlException: невозможно вставить явное значение для столбца идентификаторов в таблице SiteCate
у меня есть три таблицы: Tags, TagCategories и SiteCategory
Категории тегов имеют два столбца: один является индексом тегов, а другой — индексом категории SiteCategory. это означает, что между тегами и SiteCategory существует связь многие-ко-многим.
Когда я создаю каркас для своей базы данных в проекте .net core 8, каркас строит две модели: одну для тегов, а другую для SiteCategory.
и построитель моделей:
Тег
modelBuilder.Entity(entity => { entity.HasKey(e => e.Indx); сущность.Свойство(е => e.Tag1) .HasMaxLength(50) .HasColumnName("Тег"); сущность.HasMany(d => d.Categories).WithMany(p => p.Tags) .UsingEntity( "Категория тегов", r => r.HasOne().WithMany() .HasForeignKey("CategoryId") .OnDelete(DeleteBehavior.ClientSetNull) .HasConstraintName("FK_TagCategories_SiteCategory"), l => l.HasOne().WithMany() .HasForeignKey("TagId") .OnDelete(DeleteBehavior.ClientSetNull) .HasConstraintName("FK_TagCategories_Tags"), j => { j.HasKey("TagId", "CategoryId"); j.ToTable("Категории тегов"); j.IndexerProperty("TagId").HasColumnName("TagID"); j.IndexerProperty("CategoryId").HasColumnName("CategoryID"); }); }); Категория сайта:
modelBuilder.Entity(entity => { entity.HasKey(e => e.Indx); entity.ToTable("SiteCategory"); entity.Property(e => e.Category).HasMaxLength(18); entity.Property(e => e.ShowInSystem) .Требуется() .HasDefaultValueSql("((1))"); }); Я пытаюсь создать и добавить новый тег, и у меня есть индекс siteCategory, поэтому я хочу добавить его в Таблица TagCategories
моя функция:
public bool addTagAndTagCategory (тег тега, int? CategoryID) { пытаться { вар siteCat = db.SiteCategories.Where(cat => cat.Indx == CategoryID).FirstOrDefault(); siteCat.Tags.Add(тег); db.Add(тег); //var TagCategory = новый словарь // { // { "Идентификатор тега", tag.Indx }, // { "CategoryId", siteCat.Indx } // }; //db.Attach(TagCategory); БД.СохранитьИзменения(); var res = tag.Indx != 0 ? правда: ложь; вернуть разрешение; } ловить { бросать; } } Я получаю сообщение об ошибке: SqlException: невозможно вставить явное значение для столбца идентификаторов в таблице SiteCategory, если для IDENTITY_INSERT установлено значение OFF.
у меня есть три таблицы: Tags, TagCategories и SiteCategory
Категории тегов имеют два столбца: один является индексом тегов, а другой — индексом категории SiteCategory. это означает, что между тегами и SiteCategory существует связь многие-ко-многим.
Когда я создаю каркас для своей базы данных в проекте .net core 8, каркас строит две модели: одну для тегов, а другую для SiteCategory.
и построитель моделей:
Тег
modelBuilder.Entity(entity => { entity.HasKey(e => e.Indx); сущность.Свойство(е => e.Tag1) .HasMaxLength(50) .HasColumnName("Тег"); сущность.HasMany(d => d.Categories).WithMany(p => p.Tags) .UsingEntity( "Категория тегов", r => r.HasOne().WithMany() .HasForeignKey("CategoryId") .OnDelete(DeleteBehavior.ClientSetNull) .HasConstraintName("FK_TagCategories_SiteCategory"), l => l.HasOne().WithMany() .HasForeignKey("TagId") .OnDelete(DeleteBehavior.ClientSetNull) .HasConstraintName("FK_TagCategories_Tags"), j => { j.HasKey("TagId", "CategoryId"); j.ToTable("Категории тегов"); j.IndexerProperty("TagId").HasColumnName("TagID"); j.IndexerProperty("CategoryId").HasColumnName("CategoryID"); }); }); Категория сайта:
modelBuilder.Entity(entity => { entity.HasKey(e => e.Indx); entity.ToTable("SiteCategory"); entity.Property(e => e.Category).HasMaxLength(18); entity.Property(e => e.ShowInSystem) .Требуется() .HasDefaultValueSql("((1))"); }); Я пытаюсь создать и добавить новый тег, и у меня есть индекс siteCategory, поэтому я хочу добавить его в Таблица TagCategories
моя функция:
public bool addTagAndTagCategory (тег тега, int? CategoryID) { пытаться { вар siteCat = db.SiteCategories.Where(cat => cat.Indx == CategoryID).FirstOrDefault(); siteCat.Tags.Add(тег); db.Add(тег); //var TagCategory = новый словарь // { // { "Идентификатор тега", tag.Indx }, // { "CategoryId", siteCat.Indx } // }; //db.Attach(TagCategory); БД.СохранитьИзменения(); var res = tag.Indx != 0 ? правда: ложь; вернуть разрешение; } ловить { бросать; } } Я получаю сообщение об ошибке: SqlException: невозможно вставить явное значение для столбца идентификаторов в таблице SiteCategory, если для IDENTITY_INSERT установлено значение OFF.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение