在OnModelCreating中更改Hangfire表名称

时间:2019-07-17 08:01:56

标签: mysql asp.net-mvc entity-framework-6 hangfire

我的Web应用程序位于带有mysql数据库的asp.net MVC中。

这是hangfire配置:

public void ConfigureServices(IServiceCollection services)
{
    services.AddHangfire(configuration => {
        configuration.UseStorage(
            new MySqlStorage(
                "server=127.0.0.1;uid=root;pwd=root;database={0};Allow User Variables=True",
                new MySqlStorageOptions
                {
                    TablesPrefix = "Hangfire"
                }
            )
        );
    };
}

我在表hangfireSet之外没有找到。在数据库表中创建为hangfireset

protected override void OnModelCreating(System.Data.Entity.DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);

        modelBuilder.Entity<TableName>().ToTable("tablename");
    }

如何在OnModelCreating中访问hangfire模型类,以便可以将表名更改为小写。

1 个答案:

答案 0 :(得分:1)

由于Hangfire不是ContextDb的一部分,因此您不能以这种方式更改其表名。相反,您可以通过Hangfire配置来实现。

    services.AddHangfire(cfg => cfg
        .SetDataCompatibilityLevel(CompatibilityLevel.Version_170)
        .UseSimpleAssemblyNameTypeSerializer()
        .UseRecommendedSerializerSettings()
        .UseSqlServerStorage("YOURCONNECTIONSTRING",
            new Hangfire.SqlServer.SqlServerStorageOptions
            {
                /* other configs */
                SchemaName = "Your own scheme"
            }));