Joh*_*ohn 3 c# entity-framework-core asp.net-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("ConnectionString"));
});
// ...
}
Run Code Online (Sandbox Code Playgroud)
但是,在本例中,我尝试使用构建在 ASP.NET Core 3.1 框架之上的OrchardCore 。我需要使用该IDbConnectionAccessor服务来获取DbConnection. 所以,我可以注册AppDbContext,我想检索IDbConnectionAccessor。
我试过这个
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<AppDbContext>(scope =>
{
var accessor = scope.GetRequiredService<IDbConnectionAccessor>();
scope.UseMySql(accessor.CreateConnection());
});
// ...
}
Run Code Online (Sandbox Code Playgroud)
但该行var accessor = scope.GetRequiredService<IDbConnectionAccessor>();给了我以下错误
错误 CS1929“DbContextOptionsBuilder”不包含“GetRequiredService”的定义,并且最佳扩展方法重载“ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider)”需要“IServiceProvider”类型的接收器
在注册IDbConnectionAccessor之前如何获取实例?AppDbContext
Kir*_*kin 10
AddDbContext带有一个回调的重载,该回调同时采用IServiceProvider和DbContextOptionsBuilder。
这是一个展示如何使用它的示例:
services.AddDbContext<AppDbContext>((sp, options) =>
{
var dbConnectionAccessor = sp.GetRequiredService<IDbConnectionAccessor>();
options.UseMySql(dbConnectionAccessor.CreateConnection());
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1354 次 |
| 最近记录: |