Код: Выделить всё
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
var builder = Host.CreateApplicationBuilder(args);
builder.Services.AddDbContext();
var app = builder.Build();
var db = app.Services.GetRequiredService();
db.Database.EnsureDeleted();
db.Database.EnsureCreated();
//I have two entity types with one-to-many relationship:
class Person
{
public int Id { get; set; }
public string Name { get; set; } = string.Empty;
public int CountryId { get; set; }
public Country Country { get; set; } = null!;
}
class Country
{
public int Id { get; set; }
public ICollection
People { get; set; } = [];
}
class MyDbContext : DbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) => optionsBuilder.UseSqlServer("connectionString");
public DbSet People { get; set; } = null!;
public DbSet Countries { get; set; } = null!;
}
//Here's my seeding:
Person[] people = [
new Person { Name = "A" },
new Person { Name = "A1" },
new Person { Name = "A2" },
new Person { Name = "A3" }
];
Country[] countries = [
new Country { People = people },
new Country { People = people },
new Country { People = people },
];
db.Countries.AddRange(countries);
Код: Выделить всё
System.NotSupportedException: 'Collection was of a fixed size.'Это может быть из -за неизменности массивов, но здесь я почти уверен, что массив People не изменен или, по крайней мере, я ничего не делаю с этим. Возможно, основной фреймворк -фреймворт пытается изменить его внутренне? Тем не менее, я хотел бы понять основную причину, по которой это конкретное исключение происходит при использовании экземпляра общего массива в этом сценарии.
Подробнее здесь: https://stackoverflow.com/questions/796 ... on-when-us