ASP.NET Core获取已经在Startup.cs中注册的服务实例

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011511086/article/details/80612885
//Startup.cs中IServiceProvider
public void ConfigureServices(IServiceCollection services)
{
    string sqlConnection = "连接字符串";  
    services.AddDbContext<DataContext>(option => option.UseSqlServer(sqlConnection));

    services.AddScoped<IGroupChartsRepository, GroupChartsRepository>();
    services.AddScoped<ICombinationGroupChartsRepository, CombinationGroupChartsRepository>();
    services.AddScoped<ILogRepository, LogRepository>();
}

//获取已经注册的实例,比如在public class ExceptionFilter : IExceptionFilter这个类中获取
IWebHost host = Program.BuildWebHost(null);                   
IServiceScope scope = host.Services.CreateScope();
ILogRepository _logRepository = scope.ServiceProvider.GetService<ILogRepository>();
DataContext _dataContext = scope.ServiceProvider.GetService<DataContext>();
//处理业务逻辑,比如新增记录
Log log = new Log();
_logRepository.Add(log);
string dateTime = DateTime.Now.AddDays(-5).ToString("yyyy-MM-dd");
int count = _dataContext.Database.ExecuteSqlCommand("delete from Log where  CONVERT(varchar(30), CreateTime, 23)<@date", new SqlParameter("date", dateTime));

scope.Dispose();

猜你喜欢

转载自blog.csdn.net/u011511086/article/details/80612885
今日推荐