我有一個處理產品和產品類別的應用程序。對於這些我都有使用POCO定義的模型。存儲庫模式:模型關係的實現和延遲加載
該應用程序使用的存儲庫訪問這些模型
// The interface implemented by the application's repository
interface IProductRepository {
IEnumerable<Product> GetAllProducts();
void Add(Product product);
void Remove(Product product);
void Save(Product product);
}
在產品類別,類型產品分類的類別屬性命名應該只裝載在需要時/訪問(延遲加載) 。我希望我的模型保持POCO並只包含模型的結構。
我採取了正確的方法嗎?
我應該只有產品類中的類別ID,並使用產品類別的單獨存儲庫來加載類別?
實現延遲加載和關係
現在我實現倉庫接口的返回擴展了產品類型,並具有通過資源庫實例延遲加載支持類型的對象。
誰應負責加載產品類別?
我對產品和類別存儲庫如何交互以實現延遲加載感興趣?他們應該互相引用還是應該有一個主存儲庫與兩個子存儲庫並將其傳遞給我的擴展模型類型?
你會採取什麼方法?(任何建議和批評表示歡迎)
我要指出,我希望應用程序可擴展,爲存儲庫和模型本身將成爲一個獨立的asembly所有接口。這意味着擴展器不能直接訪問模型類定義。
#2。你的假設是絕對正確的,這正是我想要做的。 #4。我試圖通過提供一個帶有所需接口和模型的.dll來實現一個存儲庫(比這個例子中的複雜很多),然後使用MEF加載實現,從而使應用程序具有可擴展性。對於內部實現,我使用EF Code First,因此我的存儲庫將變得乾淨(將艱苦的工作留給EF)。非常感謝你爲這個偉大的答案! – 2011-05-10 20:05:38