考慮使用EF4 POCO實體和存儲庫模式將信息存儲在SQL Server數據庫中的ASP.NET MVC 2 Web應用程序項目。到目前爲止,有3個項目,如果您計算數據庫,則有4個項目:鑑於此應用程序設計,放置驗證邏輯的最佳位置在哪裏?
1.)Domain.dll沒有依賴關係,它暴露了POCO和存儲庫接口。
2.)Storage.dll依賴於Domain,實現了存儲庫接口(使用EF 4)。
3.)Mvc.dll取決於#1和#2,提供UI層。
4.)SQL Server數據庫+連接,dll不可知(無依賴關係)。
比方說,我添加其他Web應用程序來承載WCF數據服務,它提供了使用Domain.dll和Storage.dll數據庫的OData源:
5)Provider.dll,依賴於域&存儲,提供OData服務層。
域驗證邏輯屬於哪個解決方案?如果域POCO類用驗證屬性裝飾,WCF數據服務是否需要其他任何東西來保護數據?將驗證邏輯放入存儲過程是否曾經是個好主意?爲什麼?
把驗證邏輯放在SP中是一個壞主意,因爲你不能輕易改變dbs(實際上它幾乎不會發生),但意味着如果沒有實際的db(這實際上是一件壞事),你不能單元測試,而且它的笨重一直在層面上獲取錯誤消息。此外,你正在傷害可伸縮性。話雖如此,唯一的鑰匙等*應該*存在你的數據庫作爲一個back stop的理智。 – Nik 2010-10-12 17:31:55
對。我實際上是在詢問有關sp的具體驗證。我的一些實體表示分層節點,因此存在循環層次關係的可能性。這可能是我應該通過檢查db客戶端和db本身來加強的地方,儘管通過觸發器而不是sp來實現。 – danludwig 2010-10-13 13:13:36