2011-05-30 54 views
2

我正在考慮將ObjectContext置於HttpContext.Current中,以便相同請求中的所有邏輯都可以訪問它,而無需每次都打開/銷燬。 在ObjectContextManager類中,我創建了這個。執行1個查詢後處理的每個http請求的ObjectContext實例

get { 
    string ocKey = "ocm_" + HttpContext.Current.GetHashCode().ToString("x"); 
    if (!HttpContext.Current.Items.Contains(ocKey)) 
     HttpContext.Current.Items.Add(ocKey, new JEntities()); 
    return HttpContext.Current.Items[ocKey] as JEntities; 
} 

然後我每次對當前請求執行查詢時調用此靜態屬性。

public static JEntities CurrentObjectContext { 
    get { 
    if (ObjectContextManager == null) 
     InstantiateObjectContextManager(); 
    return ObjectContextManager.ObjectContext; 
    //return new JobsEntities(); 
    } 
} 

但它會在嘗試執行第二個查詢時處理。 你能告訴我我哪裏出錯了嗎?

+0

你在執行第一個查詢,比如'using(JEntities jEntities = ObjectContextManager.CurrentObjectContext){var entities = jEntities.Foo;}'? – Eranga 2011-05-30 08:43:47

回答

2

處置?您的代碼與處置無關。如果你處理了上下文,這意味着你很可能將上下文檢索包含到了using中,並且你自己處理了這個實例。

+0

WOWW ..感謝感謝 – 2011-05-30 09:09:54