Nav*_*tor 5 dbcontext asp.net-core-2.0
在我的控制器中,我有这个
private readonly DbContext _context;
public CountryController(DbContext context)
{
_context = context;
}
Run Code Online (Sandbox Code Playgroud)
如何在其他类(如静态类)中检索 DbContext 而不将其作为参数传递给方法调用
您可以通过创建服务来创建新的实例DBContext。首先你必须定义一个接口
public interface IMyService
{
void Test1();
}
Run Code Online (Sandbox Code Playgroud)
然后,您需要创建实现该接口的服务类。请注意,您IServiceProvider向依赖项注入器发出请求。
internal sealed class MyService : IMyService
{
private readonly IServiceProvider m_ServiceProvider;
// note here you ask to the injector for IServiceProvider
public MyService(IServiceProvider serviceProvider)
{
if (serviceProvider == null)
throw new ArgumentNullException(nameof(serviceProvider));
m_ServiceProvider = serviceProvider;
}
public void Test1()
{
using (var serviceScope = m_ServiceProvider.CreateScope())
{
using (var context = serviceScope.ServiceProvider.GetService<DbContext>())
{
// you can access your DBContext instance
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
最后,您指示运行时将新服务创建为单例。这是在您的ConfigureServices方法中完成的Startup.cs:
public void ConfigureServices(IServiceCollection services)
{
// other initialization code omitted
services.AddMvc();
services.AddSingleton<IMyService, MyService>();
// other initialization code omitted
}
Run Code Online (Sandbox Code Playgroud)
请注意,MyService需要是线程安全的。
| 归档时间: |
|
| 查看次数: |
2561 次 |
| 最近记录: |