C# 在向服务添加DbContext之前,我可以从容器中获取服务吗?
我有一个基于ASP.NET Core 3.1的应用程序。我通常会使用如下内容注册我的DbContextC# 在向服务添加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
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());
});