我現在正在使用Visual Studio 2008和MSSQL Server 2005開發的一個用N層體系結構設計的大項目中工作。在該項目中,使用了依賴注入的存儲庫模式統一。清理LINQ Cache和DataContext的問題
第一個問題出現在數據庫中的插入,更新等操作當時未插入或更新數據時,必須關閉應用程序並重新打開以查看新數據。
經過長時間的閱讀後,發現問題在於未正確清理的LINQ緩存。我們解決了類插入的問題,所有的實體實施以下方法:
public void ClearCache()
{
DataContextFactory.GetDataContextInstance(true);
Context.Log = Console.Out;
}
這是DataContextFactory
類:
public static class DataContextFactory
{
public static PromedDataContext Context;
public static PromedDataContext GetDataContextInstance(bool recreate)
{
return Context != null && !recreate ? Context : (Context = new PromedDataContext(GlobalAttributesProvider.DbConnectionPath));
}
}
的解決方案是創建DataContext的每一個新實例當你調用上述ClearCache
方法後,它會插入或更新值。
問題是,一段時間後,這個解決方案的工作,但在我試圖在數據庫中插入數據時,在一個時刻開始出現另一個問題。錯誤是如下:
We attempted to attach or add an entity that is not new. Perhaps he had loaded another DataContext element. This operation is not supported.
閱讀,而這個錯誤後,我解決只是徵求意見的ClearCache
方法的身體,因爲這是創建DataContext
的,當然,這打破了我的解決方案的多個實例分段緩存。
我的問題是:
還有另一種方式來清潔提到緩存避免上述錯誤? 要修復上述錯誤,請保留完整的ClearCache
方法?提前
任何幫助
謝謝讚賞。