我可以使用哪些类作为域模型?

时间:2016-03-29 13:06:42

标签: asp.net-mvc entity-framework architecture software-design

我创建了一个包含4个图层(4个项目)的解决方案:

  1. 实体框架层(EFL)
  2. 数据访问层(DAL):所有查询和CRUD操作
  3. 业务逻辑层(BLL):我的业务术语和调用DAL类
  4. MVC层(MVCL)
  5. 我向所有图层添加了EFL的引用,并添加了对BLL的DAL引用和BLL对MVCL图层的引用。 enter image description here

    我的问题是我在EFL层的实体类。我可以在MVCL中添加EFL的参考,并在控制器和视图中使用这些类,但如果我这样做,MVC模型呢?

    我在MVC的模型文件夹中创建了所有EFL类,但我没有使用MVC模型。

    我刚刚使用了EFL课程。这是真的吗?或者也许我应该创建一些函数来将EFL和MVC模型类相互转换,然后我只使用MVC模型类?

    这里的架构是真的吗?

1 个答案:

答案 0 :(得分:2)

  

我的问题是我在EFL层的实体类。我可以在MVCL中添加EFL的参考,并在控制器和视图中使用这些类,但如果我这样做,MVC模型呢?

创建一个公共库(新项目)。该项目应包含您的接口和公共实体类(如EF中使用的模型)。此项目应该对您的其他项目有0个依赖项,然后您的其他项目可以引用此项目。这将使您可以跨层重用实体对象(如果需要),还允许您在服务上定义通用接口,以便可以从层中公开这些接口而不是具体实现。

  

我刚刚使用了EFL课程。这是真的吗?或者也许我应该创建一些函数来将EFL和MVC模型类相互转换,然后我只使用MVC模型类?

是否在您的图层和顶部表示层中使用EF模型取决于模型及其使用方式。有时这很好,特别是对于非常简单的模型或简单的项目。其他时候它不是,你会想要将模型转换为更接近镜像最终行为者将如何操纵它的东西(包括验证和可能的依赖)。除非您在解决方案中指定一些通用标准,否则通常情况特定。