開發環境: asp.net core 2.2
在asp.net Core項目中需要在startup啟動類中使用DbContext對數據庫做一些操作,例如初始化部分基礎數據.
項目中使用的數據庫為sql server.
首先在Startup啟動類 ConfigureServices 方法中添加DbContext:
// 添加數據庫上下文
services.AddDbContext<ZYDBContext>(options => { options.UseSqlServer(Configuration.GetConnectionString("Default")); });
然后在后續使用的時候可以通過如下方法獲取注入的DbContext
new ZYDBContext(IApplicationBuilder.ApplicationServices.GetRequiredService<DbContextOptions<ZYDBContext>>());
但是在asp.net core 1.X 上這樣可以正常的獲得DbContext.但是在2.X會出現如下錯誤:
InvalidOperationException: Cannot resolve scoped service 'Microsoft.EntityFrameworkCore.DbContextOptions`1[EntityFrameworkCore.ZYDBContext]' from root provider.
Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteValidator.ValidateResolution(Type serviceType, IServiceScope scope, IServiceScope rootScope)
網上查了資料解決方案是,在Program類中加入如下代碼:
.UseDefaultServiceProvider(options => { options.ValidateScopes = false; })