何老师的框架哲学(二)
查询实体与查询对象
查询实体上一个包含网页提交过来参数的类
查询对象上通过查询实体创建的一个类,这个类中包含了一些方法
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数据返回到界面