在HangFire中运行存储过程

时间:2018-10-05 11:37:17

标签: asp.net-core hangfire

我正在尝试在Hangfire中执行存储过程。下面是代码

    [HttpGet]
    [Route("UpdateActivityStatus")]
    [AutomaticRetry(Attempts = 0)]
    public IActionResult UpdateStatus()
    {
        BackgroundJob.Enqueue(() =>
            _context.Database.ExecuteSqlCommand("dbo.UpdateStatus")
        );

        return Ok();
    }

但是我在仪表板中遇到以下异常。

System.ArgumentNullException: Value cannot be null. Parameter name: context

我可以理解数据库上下文没有在那里传递。但是我不确定该如何解决。

谢谢

1 个答案:

答案 0 :(得分:2)

查看文档中的以下参考文献

引用Using IoC containers

引用Passing dependencies

配置完成后,您将能够使用Enqueue重载,这将允许在调用作业时解析上下文。

例如

[HttpGet]
[Route("UpdateActivityStatus")]
[AutomaticRetry(Attempts = 0)]
public IActionResult UpdateStatus() {
    BackgroundJob.Enqueue<MyDbContext>(context =>
        context.Database.ExecuteSqlCommand("dbo.UpdateStatus")
    );
    return Ok();
}