我有一个4层(项目)解决方案 .
-
实体框架层(EFL)
-
数据访问层(DLL):所有CRUD操作和查询 .
-
业务逻辑层(BLL):调用DLL方法并向其添加一些业务 .
-
MVC层
正如我所说,我有一个单独的EFL层,因此我不知道如何在MVC中使用 benefits of models ?例如,我无法在EFL层中编写像 <required>
或 <Display(Name:="username:")>
这样的验证注释,因为如果我再次从数据库生成模型,它们可能会删除 . 即使我这样做我怎么可以使用MVC的Model文件夹?
如果我创建一个与EFL类相同的类,我需要编写大量代码来将这些类转换为彼此 .
作为什么结构我可以使用MVC模型?并将它们与Entity Framework类结合起来?
2 回答
MVC中的M对我来说是视图模型 . 这意味着它包含视图中使用的实体(针对这些视图进行了优化);它们是基于您从业务层接收的实体在控制器中构建的,并且看起来与视图模型实体完全不同 .
考虑以下问题:
您为某些其他持久性/ ORM机制更改EF的可能性有多大?
您将改变或想要添加其他前端技术的可能性有多大?
如果您的答案是可能的那些变化,那么您需要隔离特定于框架的框架 . 您可以通过使用一系列具有框架中性概念的基类来实现此目的,然后根据需要添加或删除特定于框架的派生类 . 例如 .
EfCustomer
或HibernateCustomerRepository
.如果这些变化不太可能,那么我会质疑分层方法实际提供的 Value ,我不会太担心用特定于框架的概念来装饰类 . 我的目标是尽可能保持简单和干燥 .