我有一个使用Entity Framework Core和ASP.NET Core构建的应用程序,当我的应用程序启动时,我想确保数据库被创建,并且最终(一旦我拥有迁移),我也想确保这些迁移也被运行。
最初我将Database.EnsureCreated()
放入我的DbContext
的构造函数中,但由于每次创建DbContext
的新实例时都会运行该代码,因此显然每次有人访问我的应用程序时都会运行它。
我试图将它放入我的启动代码中,但我需要一个DbContext
的实例才能这样做,而如何获取一个实例并不清楚。 我正在进行以下EF配置:
serviceCollection.AddEntityFramework()
.AddSqlServer()
.AddDbContext<Models.MyContext>(options => options.UseSqlServer(...));
我不知道如何从服务集合中获取DbContext的实例,并且我也没有看到适当的单例可以注入DbContext,以便我可以进行一次性初始化。
那么最好的地方是什么,以确保与我的DbContext相关的某些代码在每次应用程序运行时只被调用一次?