如何在n层项目中架构MVC 3,EF,ViewModels,AutoMapper,POCO,Repository和Unit of Work?

Sco*_*tie 7 repository-pattern n-tier-architecture automapper asp.net-mvc-3

我一直在阅读无数关于如何使用最佳实践构建新的MVC 3应用程序的文章.

90%的文章将EF EDMX文件合并到与MVC应用程序相同的项目中.那些将这些项目分成他们自己的项目的人并没有说明每个项目进入哪个项目以及每个项目有哪些参考.通常它们由代码片段组成,这些代码片段非常适合教授如何执行特定功能,但不告诉我如何构建解决方案.

我相信我的解决方案中至少需要5个项目.任何人都能告诉我这里是否有正确的布局?

  • 数据访问层 - 包含EF EDMX文件.(也许是DBContext自动生成的代码?)
  • 业务层 - 包含IRepository和Repository类,UoW类以及域的业务逻辑. - 包含对DAL的引用.
  • ViewModels - 包含将使用AutoMapper在我的DAL和表示层之间切换的视图模型. - 包含对DAL的引用.
  • MVC 3应用程序 - 标准MVC 3应用程序.包含对BusinessLayer和ViewModels项目的引用.
  • 测试 - 单元测试.

这看起来不错吗?有人能指出我使用ViewModels,AutoMapper,Repository模式和EF4进行n层开发的好文章吗?

Bri*_*hon 6

在查看要放入内容的项目时,考虑如何部署代码会有所帮助.将代码放在同一个项目中,然后使用命名空间将其逻辑分成单独的层.对于我工作的大多数项目,对于3个项目来说,它往往非常简单.

业务层

  • 域/业务模型和服务
  • 数据访问层

MVC应用程序

  • 查看模型
  • Automapper
  • 控制器
  • 查看

测试

  • 单元测试


Ada*_*SFT 3

我喜欢下面的

域 - 包含模型和 ViewModel

服务 - 业务逻辑和视图模型水合(即人口)代码

契约或接口 - 存储库接口、工作单元、IContext 和 ICache 网站 DataAccess - 实体框架的具体实现

有些将其 AutoMap 代码直接作为操作过滤器作为 Web 项目中的属性包含在内。我的自动映射代码是在服务项目中完成的(但这又取决于您),除非我可以使用该属性在控制器中执行此操作。

顺便说一句,在这里看到吉米的好属性: http ://lostechies.com/jimmybogard/2009/06/30/how-we-do-mvc-view-models/

不过,您上面概述的也很好。这是一个非常主观的问题。我的一般建议是“如果有人可以打开一个项目并知道在哪里寻找某些东西,那么您很可能做得正确”