Ошибка 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.