标签:
- CRL是一个面向对象的轻便型ORM业务框架
- 数据处理使用了对象/数据映射,采用Lambda表达式来表示条件查询,增加了可编程性和可靠性,出错机率低,同时也能用原生的SQL实现查询或操作
- 数据连接以编程方式进行配置,支持多个库,多种数据库类型,参见Global.asax中实现,首次使用请更改LocalSqlHelper.CreateDbHelper中数据连接
- 通过业务对象封装继承,实现业务重用性,比较常用的封装有,会员/账户系统,字典配置,分类系统,在线支付,订单/购物车,权限验证/菜单系统等等,当然也可以写自已的业务封装
- 效率问题:在对象映射上作了缓存处理,查询效率几乎等于手写SQL效率,注:CRL对象查询默认是 with(nolock)
- 数据安全:所有标准查询都经过参数化处理,无注入风险
- 动态编译:数据表自动创建/动态存储过程支持与查询转换,极大减少了数据库维护工作,增加开发效率
- 日志绑定:通过CRL操作数据时发生错误,会生成详细的错误日志,包括执行的语句,参数,方便调试
- CRL依赖CoreHelper.dll,此DLL是一个功能类库,包括数据访问,日志等功能
继承实现业务类
public class OrderManage : CRL.Order.OrderBusiness
对象操作不再需要传入T对象类型
var order = OrderManage.Instance.QueryItem(b=>b.Id==1 && b.UserId==2);
等效为
select * from Order where id=1 and UserId=2
更新删除同理
public bool TransactionTest(out string message)
{
message = "";
var helper = dbHelper;
helper.BeginTran();
try {
helper.Delete(b => b.Id == 1);
var item = new Code.ProductData() { InterFaceUser = "2222", ProductName = "product2", BarCode = "" }; helper.InsertFromObj(item);
helper.CommitTran();
message = "事务已提交";
return true; }
catch(Exception ero) { message = ero.Message + " 事务已回滚"; helper.RollbackTran(); }
return false;
}
var query = Code.ProductDataManage.Instance.GetLamadaQuery();//创查完整查询
query = query.Where(b => b.Id < 700);
int exp = 10;//过期分钟
var list = Code.ProductDataManage.Instance.QueryList(query, exp);//返回一个查询缓存,条件不一样,缓存也不一样
调用对象数据缓存
var list = Code.ProductDataManage.Instance.QueryFromAllCache(b => b.Id < 700);//在内部缓存数据中查找
var query = Code.ProductDataManage.Instance.GetLamadaQuery();
query = query.Where(b => b.Id < 700);
string name = Request["name"];
query = query.Where(b => b.InterFaceUser == name);
var list = Code.ProductDataManage.Instance.QueryList(query, compileSp: true);
将会创建并调用等效存储过程
CREATE PROCEDURE [dbo].[ZautoSp_6B517FF62BDE99E6]
(@id0 nvarchar(500),@InterFaceUser1 nvarchar(500))
AS set nocount on
select t1.[AddTime],t1.[BarCode],t1.[CategoryName],t1.[Id],t1.[InterFaceUser],t1.[Number],
t1.[ProductChannel],t1.[ProductId],t1.[ProductName],t1.[PurchasePrice],t1.[SoldPrice],
t1.[Style],t1.[SupplierId],t1.[SupplierName],t1.[TransType]
from ProductData t1 with(nolock) where (t1.Id<@Id0) and InterFaceUser=@InterFaceUser1
var user = new User(){Name="test"};
UserManage.Instance.Login(user,"user",false);//实现Form验证登录,并设定票据
| 数据库 | 基本查询 | 自动创建表 | with(nolock)查询 | 批量插入 | 存储过程 | 动态编译存储过程 | 自带业务封装 | 备注 |
| MSSQL | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 需创建分页sp_page_MSSql.sql 存储过程 |
|---|---|---|---|---|---|---|---|---|
| MySQL | 支持 | 支持 | 不支持 | 不支持 | 支持 | 不支持 | 支持 | 需创建分页sp_page_MySql.sql 存储过程 |
| ORACLE | 支持 | 支持(需高级权限) | 不支持 | 不支持 | 支持 | 不支持 | 部份支持 | 需创建分页sp_page_ORACLE.sql 存储过程 动态执行脚本 sp_ExecuteScript_ORACLE.sql |
项目文档截图:

标签:
原文地址:http://www.cnblogs.com/hubro/p/4288047.html