2013-10-29 102 views
1

我使用MS SQL Server與C#和實體框架。我應該在哪裏放置邏輯數據庫列計算

數據層對於處理保存,刪除,獲取等的每個表都有一個存儲庫。然後我有一個業務層,可以幫助用戶接口處理數據事務和錯誤處理等。

在數據庫中的一列中,我需要在保存前做一個計算。 我應該重寫數據層中的添加/更新方法並執行此計算,還是應將其置於業務層中。

感謝您的建議。

+3

(1)如果這是一個簡單的計算 - 爲什麼還要費心去存儲結果?根據需要計算它。 (2)如果它是一個相當簡單的計算,但您想要存儲結果 - 請查看數據庫級別的**計算列**。 (3)如果它非常複雜並且不能在T-SQL中輕鬆表達,那麼我會在C#中的業務層中計算它,並將結果值作爲「常規」列存儲在SQL Server表中 –

回答

3

在細粒度,規模適中的應用程序設計中,遵循標準規範AKA SOA,任何實體都有其自己的服務(業務)層和持久層對象。

當用戶界面層調用服務時,該服務正在接收一個簡單或複合的DTO,該DTO可能會映射到一個或多個分離的數據庫實體,它可以在服務層調用其他實體服務,並且您不被允許調用其他實體持久層對象。

繼方法:
如果財產A1在實體A的計算是基於實體A的性能,那麼你可能在計算持續層。
如果計算屬性A1在實體A是基於其他實體屬性那麼你必須做服務層計算。

相關問題