【问题标题】:Asp.Net MVC and Entity Framework ArchitectureAsp.Net MVC 和实体框架架构
【发布时间】:2011-02-20 08:23:33
【问题描述】:

我目前正在从事一个相当大的项目,目前正处于规划阶段。我已经对开发建议的各种模式进行了大量阅读,目前使团队分裂的事情是,当使用实体框架时,类应该通过应用层传递,以便视图接受实体框架类或应该这些类被映射到 BLL 类,如果是,应该在哪个点(控制器或库)完成?

我有兴趣听到每个解决方案的一些正面和负面的信息。

【问题讨论】:

    标签: asp.net asp.net-mvc architecture


    【解决方案1】:

    这是那些伟大的“取决于”问题之一......

    对我来说,这是一个实用主义的问题。为了方便起见,我尽可能使用原始实体类。当相关对象图开始变得过于繁琐或相关对象包含我不想通过网络发送的敏感数据时,我开始使用 DTO。

    【讨论】:

      【解决方案2】:

      这又是那些真的没有正确或错误答案的问题之一,它确实是个人品味。在将数据传递给视图时,我个人会选择使用 DTO 或接口。我不倾向于将实体对象传递给我的应用程序的不同层,它们严格限于 DAL,或者如果我确实需要将它向上传递一层,我几乎总是使用接口而不是具体类型。

      【讨论】:

      • 谢谢詹姆斯!我知道它很难安顿,但我在利弊之后,那你为什么不传递实体对象呢?
      • 默认情况下属性是延迟加载的,因此如果您传递一个实体(具有此类属性),您将始终必须确保您有一个可用的 DC。此外,如果您传递的纯粹是数据,那么 DTO 更适合
      • @Pino,是的,如果我有一个名为 Customer 的实体对象,我通常会将我的 DTO 命名为 CustomerDto 这样我就知道 DTO 指的是哪个实体。
      • @Pino:这是您必须根据您的应用程序来决定的事情。您的客户 dto 可能有一个名为 OrderHistory 的属性,它是 OrderDto 的列表,并且在创建您的客户 dto 时,您也可以填充此信息。我的建议是检索您需要的信息(如果需要,我倾向于在我的 DTO 中包含其他表信息)
      • 您可以使用构造函数来获取参数以使其更易于构造,但是,如果您要问 在哪里 我会实例化它们.....我倾向于做的是将我的实体类型扩展为具有一个名为AsDto 的方法,该方法在内部创建 DTO 并将其传递出去,例如MyEntityDto = MyEntity.AsDto();
      猜你喜欢
      • 2012-05-17
      • 2012-10-18
      • 2010-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-18
      • 2020-05-26
      • 1970-01-01
      相关资源
      最近更新 更多