在事件触发器上调用事件处理程序时,DbContext无法检索数据

时间:2014-11-18 06:17:58

标签: entity-framework events dbcontext

我在使用Win Server 2012和SQL Server Express 2008 R2的.NET 4.5上使用EF 5,Model First。

我的应用程序基本上有三个主要组件:

  1. 数据采集(在ModbusTCP上)
  2. 报告和
  3. REST界面。
  4. 我还实现了一个调度程序类,基本上让其他类安排一些操作,例如数据采集​​和报告。

    数据采集轮询每5秒执行一次,并将数据写入数据库中的表。这很好,这里没问题。

    报告每24小时,午夜调用一次,它从数据库中检索数据并生成电子表格并通过电子邮件发送。在午夜,当事件触发时,在事件处理程序使用DbContext的块时,没有从数据库中检索的数据。但是,如果我从其他方法手动调用事件处理程序,则使用块的DbContext完全相同的所有数据。

    当从事件调用处理程序时,我无法找到它的问题。我试图在数据采集写操作上使用TranscationScope来允许RepetitiveRead,但这会使问题变得更糟。我删除了写操作周围的TransactionScope

    请建议任何缩小调查范围和解决问题的方法。

    提前致谢。

1 个答案:

答案 0 :(得分:0)

找不到任何解决方案后,我继续修改我的代码,从内部调用事件处理程序,而不是从Schedular类的事件触发器调用。