如果你有一個商業規則,用戶(或用戶界面)永遠不會看到表中的前30項,你應該把這個過濾器放在Repository的GetAll()中?意思是,存儲庫是否會處理數據過濾,將數據模型化,以便像ViewModel或Controller那樣交回給調用者?我聽說模型應該很厚,而控制器/虛擬現實應該很輕。存儲庫/模型中的商業邏輯好嗎?
我遇到的問題是另一位與我共享項目的開發人員將他的所有存儲庫(每個表一個)全部使用相同的實現,只是將LinqToSql類型的屬性複製到域類型。除了通過Func提供的更新和刪除或獲取數據之外,存儲庫本身沒有任何邏輯。
我在另一方面創建的倉庫(即在T的IRepository繼承)的每個表,並把特定的邏輯在一些(不是全部),其中我感覺需要邏輯交還域對象。
所以在我的情況下,業務邏輯可以在存儲庫中完成,在他的情況下,它必須由用戶完成,該用戶可以是服務或直接使用ViewModel。哪一個更受歡迎?
感謝您的詳細解答,我意識到我不是在討論業務邏輯,而是數據訪問規則和邏輯。 – 2012-02-21 03:42:45