何老师的框架哲学(二)

查询实体与查询对象

查询实体上一个包含网页提交过来参数的类

 

查询对象上通过查询实体创建的一个类,这个类中包含了一些方法

 

QueryControllerBase 上控制器的基类,一个方法是

public virtual ActionResult PagerQuery( TQuery query ) {
            SetPage( query );//query是查询实体,这里把分页的参数增加到查询实体
            var result = Service.PagerQuery( query ); 参看1
            return ToDataGridResult( ConvertQueryResult( result ).ToList(), result.TotalCount,result.SEcho ); 参看2
        }

 

 

1  ApplicationServiceBase 中PagerQuery( query )

public virtual PagerList<TDto> PagerQuery( TQuery queryEntity ) {
            var query = CreateQuery( queryEntity );//添加上每个页面的参数,根据查询实体返回一个查询对象
            var queryable = Query( query );//返回IQueryable对象  这里的query就是查询对象了
            queryable = FilterQueryable( queryable );//钩子函数,方便在程序中增加过滤条件
            var pager = query.GetPager();//分页参数已经在CreateQuery中通过查询实体实例化到查询对象中,这里是从查询对象中获得分页和排序信息
            return _repository.OrderBy( queryable, pager.Order ).Pager( pager ).ToPageList( pager ).Convert( ToDto );//从数据库获得数据
        }

 

2 EasyUiControllerBase 是控制器的一个基类 QueryControllerBase继承与它,它内的一个函数

protected ActionResult ToDataGridResult<T>(IList<T> data, int totalCount = 0, string sEcho = "")
        {
            return new DataGridResult(data, GetTotalCount(data, totalCount), sEcho).GetResult();
        }

通过这个函数,把获得的List数据变成界面可识别的Json数据返回到界面

 

posted on 2017-08-26 11:56  土金豪  阅读(118)  评论(0编辑  收藏  举报