所以我有一個類似下面的類。有一個線程使用實體框架代碼第一個DbContext進行一些工作。實體框架 - MultipleActiveResultSets對緩存的影響
我遇到的問題是,它似乎像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
}
}
緩存在AppDomain中的唯一東西是EF模型(商店模型,概念模型和映射),而不是數據。這真的取決於你在循環中做什麼。你能再多展示一下嗎? –
這就是我已經讀過並計算出來的,但我肯定會得到陳舊/緩存的數據。我發佈了一個我認爲正在發生的事情的答案。 – raytiley