我可以将Hangfire与现有的实体框架代码第一个应用程序一起使用吗?

时间:2015-05-07 00:13:11

标签: c# entity-framework localdb hangfire

我需要每隔30秒运行一次方法 - 我只是制作一个受IP限制的单页,并且每隔30秒就通过CURL调用一次计划任务。

我正在阅读一篇文章并了解了篝火 - 这看起来很神奇!

所以,我有一个基于实体框架代码优先构建的现有应用程序 - 我尝试使用标准数据库的默认挂起设置,但是我一直得到"用户登录失败"黄色屏幕。

所以,我想知道,有没有一种快速方法可以让它在标准实体框架表\单个DbContext中工作,或者,我最好只是给它自己的数据库和登录?

根据评论更新:

我正在使用一个全新的MVC应用程序并简单地安装了hangfire。连接字符串是:

<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-myproject-20150404061144;Integrated Security=True" providerName="System.Data.SqlClient" />

我补充道:

        GlobalConfiguration.Configuration.UseSqlServerStorage("DefaultConnection");
        app.UseHangfireDashboard();
        app.UseHangfireServer();

然而,在启动时,我得到:

enter image description here

当我从启动类中删除这三行时,应用程序就像正常一样运行 - 所以,我不明白在EF可以连接时可以连接的挂机正在做什么。

2 个答案:

答案 0 :(得分:1)

似乎Hangfire需要已经创建了数据库。就我而言,我只是确保它已经初始化了:

using (var context = new MyContext())
{
   context.Database.Initialize(false);
}
Hangfire.GlobalConfiguration.Configuration.UseSqlServerStorage("EFConnectionStringName");

这是做什么的:

  • 创建数据库
  • 运行指定的初始值设定项(如果我们只调用CreateIfNotExists,我们就不会在数据库中获得正确的结果)
  • 配置Hangfire以使用新创建的数据库(MyContext使用相同的连接字符串名称)

答案 1 :(得分:-3)

这可能是因为您正在为项目使用localDB。 显然,如果你需要创建一个类似于Message Queu的Jobs和Hangfire,需要一个快速存储解决方案。 LocalDB不是很快,可能缺少Hangfire所依赖的许多功能。