Cannot resolve scoped service 'XXX' from root provider


開發環境: 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;
})

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM