【问题标题】:Which classes I can use as domain model?我可以使用哪些类作为域模型?
【发布时间】:2016-07-17 01:28:07
【问题描述】:

我创建了一个包含 4 层(4 个项目)的解决方案:

  1. 实体框架层 (EFL)
  2. 数据访问层 (DAL):所有查询和 CRUD 操作
  3. 业务逻辑层 (BLL):我的业务术语和调用 DAL 类
  4. MVC 层 (MVCL)

我将 EFL 引用添加到所有层,并将 DAL 引用添加到 BLL 并将 BLL 引用添加到 MVCL 层。

我的问题是我在 EFL 层中的实体类。我可以在 MVCL 中添加对 EFL 的引用,并在控制器和视图中使用这些类,但是如果我这样做了 MVC 模型呢?

我在 MVC 的模型文件夹中创建了所有 EFL 类,但我没有使用 MVC 模型。

我刚上过英语课。这是真的吗?或者我应该创建一些函数来将 EFL 和 MVC 模型类相互转换,然后我只使用 MVC 模型类?

这里哪种架构是正确的?

【问题讨论】:

    标签: asp.net-mvc entity-framework architecture software-design


    【解决方案1】:

    我的问题是我在 EFL 层中的实体类。我可以在 MVCL 中添加对 EFL 的引用,并在控制器和视图中使用这些类,但是如果我这样做了,MVC 模型呢?

    创建一个公共库(新项目)。该项目应包含您的接口和通用实体类(如 EF 中使用的模型)。这个项目应该对你的其他项目有 0 依赖,然后你的其他项目可以引用这个项目。这将使您可以跨层重用实体对象(如果需要),还允许您在服务上定义通用接口,以便您可以从层而不是具体实现中公开这些接口。

    我刚上过英语课。这是真的吗?或者我应该创建一些函数来将 EFL 和 MVC 模型类相互转换,然后我只使用 MVC 模型类?

    是否跨层使用 EF 模型并进入顶层表示层取决于模型及其使用方式。有时这很好,特别是对于非常简单的模型或简单的项目。其他时候不是这样,您需要将模型转换为更接近最终参与者将如何操作它的模型(包括验证和可能的依赖关系)。它通常是针对特定情况的,除非您在解决方案中指定一些通用标准。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-17
      • 1970-01-01
      • 2014-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-08
      • 2022-10-23
      相关资源
      最近更新 更多