9
看來,最有MVC3和EF4.1的重點是圍繞「代碼優先」 - 我似乎無法找到任何例子或者滿足以下條件教程:MVC3和EF數據優先:什麼是最佳實踐?
- 使用現有SQLServer數據庫
- 有網絡&數據訪問獨立的項目(我們有多個網絡應用程序共享同一數據訪問類)
- 建議進行驗證
難道這樣的例子或教程存在?是否有任何文件記錄的「最佳實踐」如何實現這一目標,或者沒有以這種方式構建解決方案的理由?
看來,最有MVC3和EF4.1的重點是圍繞「代碼優先」 - 我似乎無法找到任何例子或者滿足以下條件教程:MVC3和EF數據優先:什麼是最佳實踐?
難道這樣的例子或教程存在?是否有任何文件記錄的「最佳實踐」如何實現這一目標,或者沒有以這種方式構建解決方案的理由?
這是很常見的情況,它取決於您是否想要使用EDMX文件進行映射,或者是否想要在代碼中定義映射(如代碼優先)。
這兩種情況都可以做到數據庫第一
這兩種方法都不將增加數據annotatio的納秒。實體上的數據註釋不應該用於客戶端驗證(這是不好的做法),除非您正在執行非常簡單的應用程序。通常情況下,您的觀點具有更高級的期望,因此對實體的驗證可能會有所不同。例如,插入視圖和更新視圖可能需要不同的驗證,並且不可能在實體上使用單個數據註釋集執行它。因此,您應該將數據註釋驗證轉移到專門的視圖模型,並將您的實體轉換爲查看模型,反之亦然(您可以使用AutoMapper來簡化此操作)。
無論如何,它是possible to add data annotations to generated classes通過好友類,但如上所述,這不是一個好的做法。
對實體數據註釋都同意和不同意。對於簡單的約束如長度和可空性,我認爲對實體類的數據註釋是可以接受的。否則,您已經創建了一個反模式的貧血域模型(http://martinfowler.com/bliki/AnemicDomainModel.html)。一致認爲,視圖模型具有更復雜的業務場景,並且應該會/會有更復雜的驗證要求。 – Jeff
是Web項目的edmx部分,還是在其自己的類庫中?我已經更新了該問題以刪除註釋進行驗證,因爲我想避免貧血域模型。 – chris
我會使用一個單獨的類庫。 – Jeff