Я получил "NotSupportedException: Коллекция имела фиксированный размер" при попытке вставить в таблицу ссылок в Многие-ко-многим в ASP.NET Core 2,2 .
Я могу вставить значения вручную в SQL Server!
Мои сущности:
public class Product
{
[key]
public int Id {get;set;}
public ICollection<ProductCategory> ProductCategories { get; set; } = new List<ProductCategory>();
}
public class Category
{
[key]
public int Id {get;set;}
public string Name { get; set; }
public ICollection<ProductCategory> ProductCategories { get; set; } = new List<ProductCategory>();
}
public class ProductCategory
{
[Key]
public int ProductId { get; set; }
public Product Product { get; set; }
[Key]
public int CategoryId { get; set; }
public Category Category { get; set; }
}
в DbContext:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<ProductCategory>().HasKey(t => new { t.ProductId, t.CategoryId });
modelBuilder.Entity<ProductCategory>()
.HasOne(bc => bc.Product)
.WithMany(b => b.ProductCategories)
.HasForeignKey(bc => bc.ProductId);
modelBuilder.Entity<ProductCategory>()
.HasOne(bc => bc.Category)
.WithMany(c => c.ProductCategories)
.HasForeignKey(bc => bc.CategoryId);
base.OnModelCreating(modelBuilder);
}
public DbSet<Product> Products { get; set; }
public DbSet<Category> Categories { get; set; }
public DbSet<ProductCategory> ProductCategories {get; set;}
Я пытаюсь вставить записи в Товар и категорию, Записи вставлены без проблем.
Но как только я пытаюсь вставить связывающие записи, я получаю «NotSupportedException: Коллекция имеет фиксированный размер» ошибка.
Вставка:
var Electronics = new Category
{
Name = "Electronics",
};
var Exir = new Product
{
Name = "Exir",
};
var pc1 = new ProductCategory();
bc1.Product = Exir ;
bc1.Category = Electronics;
Exir.ProductCategories.Add(pc1);
sqlContext.Categories.Add(Electronics);
sqlContext.Products.Add(Exir);
sqlContext.SaveChanges();