Asp.net-Mvc
ASP.NET MVC - 數據庫實體或視圖模型?
我目前正在開發一個 ASP.NET MVC 項目。
團隊中的一些開發人員希望將自動生成的數據庫實體直接綁定到視圖。
其他開發人員想要創建定制的 ViewModel 並將它們綁定到 Views。
客觀地說,這兩種方法的優缺點是什麼?
(“數據庫實體”是指 ORM 框架生成的自動生成的類,例如 LINQ to SQL、Entity Framework 或 LLBLGen)。
絕對在您的視圖中使用視圖模型,並使用類似的東西
AutoMapper輕鬆地從實體創建視圖模型。缺點:
- 有時感覺就像在複製程式碼,特別是當視圖模型和實體具有完全相同的屬性時
優點:
- 您經常需要以更簡單的格式(通常稱為展平)來表示對象,但您需要在伺服器端完全保真。這使您可以在兩者之間進行轉換,而不會用展示文稿弄亂您的域模型。
- 聚合根通常有許多與特定視圖無關的值對象和附加實體,在視圖模型中省略它們可以使其更易於使用。
- 您的實體將有許多在 API 方面合理的雙向引用,但在為 JSON、XML 等序列化它們時會創建純粹的地獄。視圖模型將消除這些循環引用。
- 您可能經常使用相同的實體,但以不同的方式用於不同的視圖。試圖在一種類型上平衡兩種需求可能會造成巨大的混亂。