我編寫了一個分層的.NET 4.0應用程序。數據層是使用實體框架實現的,並且存在將實體實例提供給調用者(即業務層)的存儲庫。當實體框架被問及某個實體兩次(例如通過鍵)時,它將返回相同的實例,所以我對實體所做的更改將反映在實體所使用的其他位置。但它並不是一個真正的緩存功能,因爲沒有過期策略,並且性能看起來沒有多大提高,因爲實體框架仍然會查詢數據庫,至少在很多情況下。重點在於確保每個實體只有一個實例(每個上下文)。在實體框架中實現「每個對象一個實例」
在業務層中,實體映射到可能與實體結構不同的業務對象。再次,像數據層中的存儲庫一樣,存在集中的訪問點來獲取業務對象的實例。我現在的目標是,具有與實體框架所提供的功能相同的功能,即在業務層中「始終爲某個對象返回相同的實例」。我想確保在應用程序的任何位置對某個業務對象的每次訪問都可以在同一個實例上運行。
BEGIN EDIT
上下文感知很重要!與實體框架類似,每個業務對象實例的唯一性應該在每個上下文基礎上提供,而不是嚴格在整個應用程序上提供。在業務層中還有上下文的概念,每個上下文應該有自己的每個業務對象的實例。這個實例應該在使用上下文的任何地方重用。
另外我正在尋找一個解決方案,不需要爲每個單一的業務對象類實現。其中可能有數百個。我更喜歡框架代碼中的解決方案,這對於實施存儲庫的人來說是儘可能透明的。實體框架本身也不知道具體的實體類型,實體框架仍然能夠爲實體模型開發人員提供透明的功能。
編輯完
我的問題是:
- 是否有一個名字爲這個「每個對象只有一個實例」的行爲? Google搜索字詞是什麼?
- 是否有參考文獻,指導方針或最佳實踐,或者是否存在處理此問題的設計模式?
- .NET中是否有類有助於編寫這樣的功能,甚至完全提供它?
感謝和問候, 彼得。
非常感謝您的提示!你是否知道我可以在業務層重用的(儘可能)泛型實現,還是我必須自己編寫它? – Peter