Я использую новый метод HasData EF Core (3.1) в OnModelCreating для заполнения данных в ASP. NET Core (3.1) MVC проекте. Но даже OnModelCreating вызывается в контроллер, данные отсутствуют по веб-запросу. Хотя создание области действия и добавление данных при запуске приложения с последующим вызовом SaveChanges работает, как и ожидалось. В чем может быть причина того, что OnModelCreating не заполняет данные?
// Does not seed data
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder
.Entity<MyEntity>()
.HasData(new MyEntity() { });
}
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
services.AddDbContext<MyContext>(options => options.UseInMemoryDatabase("MyDb"));
}
Контроллер:
private readonly ProductContext _context;
public ManufacturersController(ProductContext context)
{
_context = context;
}
Но это работает, как и ожидалось, при вызове метода Main:
using (var scope = host.Services.CreateScope())
{
var services = scope.ServiceProvider;
var db = services.GetService<MyContext>();
var myEntity= db.MyEntity.Add(new MyEntity{});
db.SaveChanges();
}
Может ли это быть проблемой времени жизни объекта (контейнер Io C - asp. net по умолчанию)?