我有一個CRUD沉重的ASP.NET應用程序,其中包含存儲過程中的所有業務邏輯。將數據移出數據庫時將業務邏輯移動到何處
作爲一個例子,有一個UPDATE存儲過程約500行,幷包含大量的條件邏輯,引用了多個表UDFs & UDF。 proc需要更新字段名稱和新值,設置一堆聲明的變量,執行一堆驗證並創建動態SQL語句來執行更新。一旦適合所有人。這很大,很混亂。
我想將業務邏輯轉移到.NET端,以便更容易管理/更新,測試並置於源代碼控制之下。
我的問題是這樣的:這個商業邏輯應該去哪裏?
假設我有一個名爲'Factory'的屬性的PurchaseOrder對象。如果工廠被更改,我需要確保分配的新工廠生產PurchaseOrder上的產品,具有定價並且基於該工廠要求最低數量等。所有這些驗證都需要在數據庫。
我應該有PurchaseOrder對象的Factory setter負責通過一個'isFactoryValid'方法/屬性來進行數據驗證,該方法/屬性可以對通用數據訪問對象進行多重調用,然後進行更新?
我還是創建一個PurchaseOrder /數據庫'代理'對象,負責處理與PurchaseOrder相關的數據訪問。在這種情況下,我是否會在代理中有一個'isFactoryValid'方法,由PurchaseOrder的setter調用,然後調用代理的更新方法?
如何確定是否需要擔心增加所有這些額外呼叫的數據庫流量?
但是請注意:將業務邏輯移出數據庫可能會導致數據庫調用(「chattiness」)增加 – RobS 2009-04-22 00:59:21