2013年11月29日星期五

多层架构+MVC+EF+AUTOFAC+AUTOMAPPER - 我佛慈悲纠结

本邮件内容由第三方提供,如果您不想继续收到该邮件,可 点此退订
多层架构+MVC+EF+AUTOFAC+AUTOMAPPER - 我佛慈悲纠结  阅读原文»

  最近使用ligerui搭建了一个简单的教务管理demo,将重要的地方记录,也希望能帮到有这方面需要园友。


一、目录

 1、多层架构+MVC+EF+AUTOFAC+AUTOMAPPER;

 2、MVC中验证码的实现(经常用,记录备用)

二、正文

 多层架构中等以上规模以上的系统用得比较多,此demo功能不多,出于抱着学习的态度搭建了一个多层架构,并加入现在很流行的依赖倒转(autofac)、对象映射工具(automapper)。

 话说没图你说个J8,先上框架图:

  Model层中Entity存放数据库实体,使用code first,ViewModel存放界面展示模型。DAL层中IDAO存放接口,EFDAO实现IDAO。BLL结构与DAL类似,接口+实现。WEB层就是我们的UI层了,在这个框架中,WEB层使用MVC。什么,MVC不就是多层架构嘛,怎么还把它放Web层呢?MVC并不等同于多层架构,有这样疑问的同学,请在园内搜索相关文章。Infrastructure层是我们的基础设施层,我把一些常用的工具类封装后放入其中,方便其它地方调用。

  IDao中定义了一个公共基类,基类中定义所有子类都会用到的查询方法:

1 namespace YTJWGL_IDao
2 {
3 public interface IBaseDao<T>
4 {
5 #region 查询普通实现方案(基于Lambda表达式的Where查询)
6 /// <summary>
7 /// 获取所有Entity
8 /// </summary>
9 /// <param name="exp">Lambda条件的where</param>
10 /// <returns></returns>
11 IEnumerable<T> GetEntities(Func<T, bool> exp);
12
13 /// <summary>
14 /// 计算总个数(分页)
15 /// </summary>
16 /// <param name="exp">Lambda条件的where</param>
17 /// <returns></returns>
18 int GetEntitiesCount(Func<T, bool> exp);
19
20 /// <summary>
21 /// 分页查询(Linq分页方式)
22 /// </summary>
23 /// <param name="pageNumber">当前页</param>
24 /// <param name="pageSize">页码</param>
25 /// <param name="orderName">lambda排序名称</param>
26 /// <param name="sortOrder">排序(升序or降序)</param>
27 /// <param name="exp">lambda查询条件where</param>
28 /// <returns></returns>
29 IEnumerable<T> GetEntitiesForPaging(int pageNumber, int pageSize, Func<T, string> orderName, string sortOrder, Func<T, bool> exp);
30
31 /// <summary>
32 /// 根据条件查找
33 /// </summary>
34 /// <param name="exp">lambda查询条件where</param>
35 /// <returns></returns>
36 T GetEntity(Func<T, bool> exp);
37
38

没有评论:

发表评论