2012-11-29 113 views
0

處理N層體系結構中的非刪除實體的最佳實踐方法是什麼?有問題的架構有一個服務層和一個存儲庫層。存儲庫是唯一直接訪問數據庫的層(通過ORM)。目前,存儲庫層主要處理CRUD操作。該層是否應該根據給定的狀態處理實體的檢索?處理N層體系結構中的非刪除實體

讓我解釋一下在我們的系統中使用狀態。我們想使用狀態來刪除實體。因此,不是刪除用戶實體,而是將其狀態設置爲「已刪除」。現在,User Repository公開了一個Get方法。在沒有任何參數的情況下調用Get應該會返回系統中的所有用戶,不管其狀態如何,但是如果我們只想獲得活動用戶,最好是在Service層還是Repository層處理。如果我們要在服務層中完成,我們需要在Repository Get方法響應中提供一個過濾器。如果我們在存儲庫層中完成它,我們將獲得Get狀態枚舉,因此您可以調用Get(Status.Active)。處理這樣的事情最好的辦法是什麼?

回答

0

我會建議限制獲取(id)檢索特定實體的細節,然後實現某種類型的接受SearchCriteria對象來定義搜索參數(如狀態)的查找/搜索功能。要回答關於在哪裏執行過濾器的問題,我會建議數據庫,因爲它已針對查詢執行進行了優化。