1

我正在尝试将“Hangfire”集成到我现有的 ASP.NET Core 应用程序中。查看文档,如果我们想使用 SQL Server 存储选项,似乎需要创建 Hangfire db。但是每次我们启动一个新服务器时创建一个数据库真的很烦人。

有没有一种方法可以在启用 SQL 存储选项的情况下为 DB 播种,而不是像这样从启动类中播种?

 services.AddHangfire(options =>
            options.UseSqlServerStorage(Configuration["HangfireConnection"]));
4

1 回答 1

1

一个好的解决方案可能是将这个问题与一些 TSQL 脚本隔离开来,并在应用程序启动或运行测试之前运行这些脚本(基于您的场景),但我之前使用过的快速解决方案是这样的(基于此帖子)

public class HangfireContext : DbContext
{
    public HangfireContext(DbContextOptions options)
        : base(options)
    {
        Database.EnsureCreated();
    }
}


public class Startup
{

   public void ConfigureServices(IServiceCollection services)
   {
      var connectionString = Configuration.GetConnectionString("HangfireConnectionString");
      var optionsBuilder = new DbContextOptionsBuilder<HangfireContext>();
      optionsBuilder.UseSqlServer(connectionString);
      var hangfireDbContext = new HangfireContext(optionsBuilder.Options);

      services.AddHangfire(config =>
                config.UseSqlServerStorage(connectionString));
   }
}
于 2020-08-11T15:05:50.087 回答