【发布时间】:2011-02-20 08:23:33
【问题描述】:
我目前正在从事一个相当大的项目,目前正处于规划阶段。我已经对开发建议的各种模式进行了大量阅读,目前使团队分裂的事情是,当使用实体框架时,类应该通过应用层传递,以便视图接受实体框架类或应该这些类被映射到 BLL 类,如果是,应该在哪个点(控制器或库)完成?
我有兴趣听到每个解决方案的一些正面和负面的信息。
【问题讨论】:
标签: asp.net asp.net-mvc architecture
我目前正在从事一个相当大的项目,目前正处于规划阶段。我已经对开发建议的各种模式进行了大量阅读,目前使团队分裂的事情是,当使用实体框架时,类应该通过应用层传递,以便视图接受实体框架类或应该这些类被映射到 BLL 类,如果是,应该在哪个点(控制器或库)完成?
我有兴趣听到每个解决方案的一些正面和负面的信息。
【问题讨论】:
标签: asp.net asp.net-mvc architecture
这是那些伟大的“取决于”问题之一......
对我来说,这是一个实用主义的问题。为了方便起见,我尽可能使用原始实体类。当相关对象图开始变得过于繁琐或相关对象包含我不想通过网络发送的敏感数据时,我开始使用 DTO。
【讨论】:
这又是那些真的没有正确或错误答案的问题之一,它确实是个人品味。在将数据传递给视图时,我个人会选择使用 DTO 或接口。我不倾向于将实体对象传递给我的应用程序的不同层,它们严格限于 DAL,或者如果我确实需要将它向上传递一层,我几乎总是使用接口而不是具体类型。
【讨论】:
Customer 的实体对象,我通常会将我的 DTO 命名为 CustomerDto 这样我就知道 DTO 指的是哪个实体。
OrderHistory 的属性,它是 OrderDto 的列表,并且在创建您的客户 dto 时,您也可以填充此信息。我的建议是检索您需要的信息(如果需要,我倾向于在我的 DTO 中包含其他表信息)
AsDto 的方法,该方法在内部创建 DTO 并将其传递出去,例如MyEntityDto = MyEntity.AsDto();