2016-04-08 19 views
0

我有一个4层(项目)解决方案。如何在4层项目中使用MVC域模型?

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

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

如果我创建了一些与EFL类相同的类,我需要编写一大堆代码将这些类转换为对方。

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

+0

是的,你需要在模型文件夹中编写模型类 – Dilip

回答

1

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

1

想想下面的问题:

  • 的可能性有多大,你就会改变EF一些其他持久性/ ORM机制?
  • 您可能会改变或希望添加其他前端技术的可能性有多大?

如果您的答案是可能发生这些更改,那么您需要隔离特定于框架的内容。你可以通过一系列具有框架中立概念的基类来实现,然后根据需要添加或删除特定于框架的派生类。例如。 EfCustomerHibernateCustomerRepository

如果这些变化不太可能,那么我会质疑分层方法实际提供的价值,我不会太在意使用框架特定的概念来装饰类。我的目标是让事情尽可能简单和干爽。

相关问题