簡體   English   中英

在ASP.net MVC中使用EF對象的設計注意事項

[英]Design considerations for using EF objects in ASP.net MVC

我在我的一個mvc 3項目中首先使用EF代碼。 我有一個問題,即在將復雜的EF POCO對象傳入和傳出視圖時要使用哪些模式。

例如,客戶對象具有訂單列表,每個訂單都有一個項目列表。 客戶對象將被發送到視圖。 視圖更新客戶對象及其內部對象(訂單,項目),然后將其發送回控制器。 控制器具有EF以持久保存客戶對象。

我的問題如下:

  1. 我應該將EF poco對象序列化為JSON對象,以便在視圖中使用它嗎?

  2. 當我從視圖接收更新時,如何重新構建客戶對象?

  3. 重建客戶對象后,是否可以一次性保存整個對象圖(客戶,訂單,項目)?

謝謝

我傾向於遠離使用EF POCO對象作為我的視圖的模型。 我通常會從一個或多個POCO對象創建視圖模型,因為我在視圖中需要的東西永遠不會與單個EF POCO對象完全匹配。 然后,視圖模型將創建EF對象,然后將其保存到DB。

  1. 我應該將EF poco對象序列化為JSON對象,以便在視圖中使用它嗎? 沒有。
  2. 當我從視圖接收更新時,如何重新構建客戶對象? 別。 讓默認的模型綁定器將POSTed數據具體化為viewmodel(或editmodel),並使用該數據向較低層發出命令。
  3. 重建客戶對象后,是否可以一次性保存整個對象圖(客戶,訂單,項目)? 它是,但你不應該。 而是根據您的用例單獨處理每個更新。

在這里關注mojo722和Pluc的建議。 不要在MVC層中使用EF POCO實體。 使用viewmodels。 以下是它的工作原理:

  • 控制器需要數據,它要求較低層。 較低層獲取數據並返回實體(或更好的實體視圖)。
  • 控制器將實體轉換為視圖模型(AutoMapper適用於此,但您也可以手動映射)。
  • 控制器傳遞視圖模型進行查看。
  • View從HTML表單發送HTTP POST數據。
  • 默認模型綁定器將HTTP POSTed表單數據轉換為viewmodel。
  • Controller接收視圖模型數據,向下層發出命令。
  • 下層使用EF來保存新的實體狀態。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM