如何在4层项目中使用MVC域模型?

时间:2016-04-08 08:37:36

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

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

  1. 实体框架层(EFL)
  2. 数据访问层(DLL):所有CRUD操作和查询。
  3. 业务逻辑层(BLL):调用DLL方法并向其添加一些业务。
  4. MVC Layer
  5. 正如我所说,我有一个单独的EFL层,因此我不知道如何在MVC中使用模型的好处?例如,我无法在EFL层中编写<required><Display(Name:="username:")>等验证注释,因为如果我再次从数据库生成模型,它们可能会删除。即使我这样做我怎么可以使用MVC的Model文件夹?

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

    我可以使用什么结构的MVC模型?并将它们与Entity Framework类结合起来?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

考虑以下问题:

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

如果您的答案是可能的那些变化,那么您需要隔离特定于框架的框架。您可以通过使用一系列具有框架中性概念的基类来实现此目的,然后根据需要添加或删除特定于框架的派生类。例如。 EfCustomerHibernateCustomerRepository

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