C# 在向服务添加DbContext之前,我可以从容器中获取服务吗?

C# 在向服务添加DbContext之前,我可以从容器中获取服务吗?,c#,asp.net-core,entity-framework-core,asp.net-core-3.1,C#,Asp.net Core,Entity Framework Core,Asp.net Core 3.1,我有一个基于ASP.NET Core 3.1的应用程序。我通常会使用如下内容注册我的DbContext public void ConfigureServices(IServiceCollection services) { services.AddDbContext<AppDbContext>(scope => { scope.UseMySql(Configuration.GetConnectionString("ConnectionSt

我有一个基于ASP.NET Core 3.1的应用程序。我通常会使用如下内容注册我的DbContext

public void ConfigureServices(IServiceCollection services)
{
    services.AddDbContext<AppDbContext>(scope =>
   {
       scope.UseMySql(Configuration.GetConnectionString("ConnectionString"));
   });

   // ...
}
但是行var accessor=scope.GetRequiredService;是给我以下的错误

错误CS1929“DbContextOptionsBuilder”不包含定义 对于“GetRequiredService”和最佳扩展方法重载 'ServiceProviderServiceExtensions.GetRequiredServiceIServiceProvider' 需要“IServiceProvider”类型的接收器

如何在注册AppDbContext之前获取IDbConnectionAccessor的实例?

AddDbContext附带了一个用于同时使用IServiceProvider和DbContextOptionBuilder的回调的实例

下面是一个演示如何使用它的示例:

services.AddDbContext<AppDbContext>((sp, options) =>
{
    var dbConnectionAccessor = sp.GetRequiredService<IDbConnectionAccessor>();
    options.UseMySql(dbConnectionAccessor.CreateConnection());
});
AddDbContext附带一个for回调函数,该函数同时接受IServiceProvider和DbContextOptionsBuilder

下面是一个演示如何使用它的示例:

services.AddDbContext<AppDbContext>((sp, options) =>
{
    var dbConnectionAccessor = sp.GetRequiredService<IDbConnectionAccessor>();
    options.UseMySql(dbConnectionAccessor.CreateConnection());
});