所以我有一个看起来像下面这样的类。有一个线程使用 Entity Framework Code First DbContext 完成一些工作。
我遇到的问题是 m_DB 上下文似乎正在缓存数据,即使它应该为每个处理循环进行处理和重新创建。
我所看到的是,加载的模型中不存在关系中的某些数据。如果我突然终止并重新启动该过程,则可以正常找到数据。
我唯一能想到的是这个应用程序在数据库连接字符串中使用 MultipleActiveResultSets=true,但我找不到任何清楚说明这会导致我看到的行为的东西。
任何见解将不胜感激。
public class ProcessingService
{
private MyContext m_DB = null
private bool m_Run = true;
private void ThreadLoop()
{
while(m_Run)
{
try
{
if(m_DB == null)
m_DB = new MyContext();
}
catch(Exception ex)
{
//Log Error
}
finally
{
if(m_DB != null)
{
m_DB.Dispose();
m_DB = null;
}
}
}
}
private void ProcessingStepOne()
{
// Do some work with m_DB
}
private void ProcessingStepTwo()
{
// Do some work with m_DB
}
}