首页 文章

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

提问于
浏览
0

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

  • 实体框架层(EFL)

  • 数据访问层(DLL):所有CRUD操作和查询 .

  • 业务逻辑层(BLL):调用DLL方法并向其添加一些业务 .

  • MVC层

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

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

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

2 回答

  • 1

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

  • 1

    考虑以下问题:

    • 您为某些其他持久性/ ORM机制更改EF的可能性有多大?

    • 您将改变或想要添加其他前端技术的可能性有多大?

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

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

相关问题