2012-04-13 36 views
1

我需要將一些複雜的業務邏輯放入數據庫出於性能原因,我正在使用respository模式。問題是 - 我應該從庫中調用這個業務邏輯嗎?我知道存儲庫不應該知道BL,因爲它只是BL和數據存儲之間的中介(它應該只包含CRUD和查詢方法)。 你覺得呢?存儲庫和數據庫特定的業務邏輯

+0

「將一些複雜的業務邏輯放入數據庫」=>你的意思是存儲過程嗎? – guillaume31 2012-04-13 12:01:27

+0

是的,我的意思是SP。 – andrew 2012-04-13 12:29:30

回答

2

存儲庫的職責是提供內存中的實體查詢或添加到實體的集合。我不知道你在談論什麼樣的業務邏輯,但是如果你將它引入到一個Repository中,它很可能會違反單一責任原則。這意味着要給存儲庫代碼許多改變的理由,減少凝聚力,因此有很多原因要打破。

如果你的數據庫中有業務邏輯的存儲過程,我建議你在調用代碼和db之間引入某種接口,以保持事物的解耦。它不會是一個Repository,因爲它的目的是觸發一些業務邏輯而不是持久化數據,但實現可能採取基礎架構服務的形式。

這將允許您使用模擬數據庫隔離測試代碼,並切換到另一個數據庫訪問接口的實現指向另一個數據庫管理系統,或者如果您決定放棄存儲過程,有一點。