【问题标题】:How to use MVC domain model in a 4 layer project?如何在 4 层项目中使用 MVC 域模型?
【发布时间】:2016-04-08 08:37:36
【问题描述】:

我有一个 4 层(项目)解决方案。

  1. 实体框架层 (EFL)
  2. 数据访问层 (DLL):所有 CRUD 操作和查询。
  3. 业务逻辑层(BLL):调用 DLL 方法并向其中添加一些业务。
  4. MVC 层

正如我所说,我有一个单独的 EFL 层,因此我不知道如何在 MVC 中使用模型的好处?例如,我不能在 EFL 层中编写像 <required><Display(Name:="username:")> 这样的验证注释,因为如果我再次从数据库生成模型,它们可能会被删除。即使我这样做了如何使用 MVC 的 Model 文件夹?

如果我创建一些与 EFL 类相同的类,我需要编写大量代码来将这些类相互转换。

作为什么结构我可以使用 MVC 模型?并将它们与实体框架类结合起来?

【问题讨论】:

  • 是的,您需要在 Model 文件夹中编写模型类

标签: asp.net-mvc oop design-patterns architecture model


【解决方案1】:

MVC 中的 M 对我来说就是视图模型。这意味着它包含在您的视图中使用的实体(针对这些视图进行了优化);它们是根据您从业务层收到的实体在控制器中构建的,并且看起来与视图模型实体完全不同。

【讨论】:

    【解决方案2】:

    思考以下问题:

    • 您为其他一些持久性/ORM 机制更改 EF 的可能性有多大?
    • 您改变或想要添加其他前端技术的可能性有多大?

    如果您的答案是这些更改很可能发生,那么您需要隔离特定框架。您可以通过使用一系列具有框架中性概念的基类来做到这一点,然后拥有可以根据需要添加或删除的特定于框架的派生类。例如。 EfCustomerHibernateCustomerRepository

    如果这些更改不太可能发生,那么我会质疑分层方法实际提供的价值,并且我不会太担心使用特定于框架的概念来装饰类。我的目标是让事情尽可能简单和干燥。

    【讨论】:

      猜你喜欢
      • 2011-07-15
      • 1970-01-01
      • 2015-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多