CRL是一款面向对象的轻量级ORM框架,本着快速开发,使用简便的原则,设计为
在3.0大版本,增加了上手示例CRLShoppingDemo 供参考,同时自带的开发文档也在同步更新
到目前为止,常用查询语法和函数方法已经解析完成,支持功能表现在:
语法查询优化表现在以下几个方面
查询方法修改
代码1(实现Group查询)
//Group查询 var query = Code.ProductDataManage.Instance.GetLambdaQuery(); query.Select(b => new { b.BarCode, total = b.BarCode.COUNT() }); query.Where(b => b.Id > 0); query.GroupBy(b => new { b.BarCode }); query.OrderBy(b => b.BarCode.COUNT(), true);//Group需要设置排序 query.Page(15,1);//如果要分页,设定分页参数就行了 var list = query.ToDynamic(); int total = query.RowCount;
输出
select t1.BarCode,COUNT(t1.BarCode) as total from [ProductData] t1 with(nolock) where (t1.Id>@parame0) group by t1.BarCode order by COUNT(t1.BarCode) desc [parame0]:[0]
代码2(实现关联查询)
//关联查询 var query = Code.ProductDataManage.Instance.GetLambdaQuery(); query.Where(b => b.Id > 0); query.Join<Code.Member>((a, b) => a.UserId == b.Id).Select((a, b) => new { a.BarCode, b.Name }); query.Page(15,1);//如果要分页,设定分页参数就行了 var list = query.ToDynamic(); int total = query.RowCount;
输出
select t1.BarCode,t2.Name from [ProductData] t1 with(nolock) Inner join Member t2 with(nolock) on (t1.UserId=t2.Id) where (t1.Id>@parame0) [parame0]:[0]
代码3(实现关联再Group)
//关联再Group查询 var query = Code.ProductDataManage.Instance.GetLambdaQuery(); query.Where(b => b.Id > 0); query.Join<Code.Member>((a, b) => a.UserId == b.Id).GroupBy((a, b) => new { a.BarCode, b.Name }).Select((a, b) => new { a.BarCode, b.Name }); query.OrderBy(b=>b.BarCode); query.Page(15,1);//如果要分页,设定分页参数就行了 var list = query.ToDynamic(); int total = query.RowCount;
输出
select t1.BarCode,t2.Name from [ProductData] t1 with(nolock) Inner join Member t2 with(nolock) on (t1.UserId=t2.Id) where (t1.Id>@parame0) group by t1.BarCode,t2.Name order by t1.BarCode desc [parame0]:[0]
代码4(实现多次关联)
//多表关联查询 var query = Code.ProductDataManage.Instance.GetLambdaQuery(); query.Where(b => b.Id > 0); query.Join<Code.Member>((a, b) => a.UserId == b.Id).Select((a, b) => new { a.ProductName, b.Name });//筛选返回的字段 query.Join<Code.Order>((a, b) => a.UserId == b.UserId).Select((a, b) => new { orderid = b.OrderId });//筛选返回的字段 query.OrderBy(b=>b.BarCode); query.Page(15,1);//如果要分页,设定分页参数就行了 var list = query.ToDynamic(); int total = query.RowCount;
输出
select t1.ProductName,t2.Name,t3.OrderId as orderid from [ProductData] t1 with(nolock) Inner join Member t2 with(nolock) on (t1.UserId=t2.Id) Inner join OrderProduct t3 with(nolock) on (t1.UserId=t3.UserId) where (t1.Id>@parame0) order by t1.BarCode desc [parame0]:[0]
关于分页
关于数据表创建缓存依赖
由于以上问题,可能会导至找不到字段或表的错误,当前版本作了完善,于是在后台单独开启了一个线程,用以检查表结构,在对象被首次访问后,就会添加到结构检查队列,由后台异步进行处理
在程序运行后,每个被访问过的对象会被检查一次结构,达到结构同步的目的
源码请入群获取,密语CRL
源码结构:
CRL3.0=>
CRLShoppingDemo------------->在线购物示例项目
Core.Mvc------------------------->MVC简单封装
CRL------------------------------->CRL主框架
CRL.Package--------------------->CRL业务封装
RoleControl---------------------->基于CRL实现的通用权限系统
WebTest------------------------->开发&测试文档
历史升级导读
原文:http://www.cnblogs.com/hubro/p/4981728.html