繁体   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