散分,发布我整理的ORM开发框架(不带外链,别删了)

hubro 2014-10-28 04:56:01
加精
CRL是一个面向对象的轻便型ORM业务框架
数据处理使用了对象/数据映射,条件查询采用Lambda表达式来表示,增加了可编程性和可靠性,出错机率低,同时也能用原生的SQL实现查询或操作
数据连接以编程方式进行配置,支持多个库,参见Global.asax中实现,首次使用请更改LocalSqlHelper.CreateDbHelper中数据连接
通过业务对象封装继承,实现业务重用性,比较常用的封装有,会员/账户系统,字典配置,分类系统,在线支付,订单/购物车,权限验证/菜单系统等等,当然也可以写自已的业务封装
效率问题:在对象映射上作了缓存处理,查询效率几乎等于手写SQL效率,注:CRL对象查询默认是 with(nolock)
数据安全:所有标准查询都经过参数化处理,无注入风险
动态存储过程支持与查询转换,极大减少了数据库维护工作,增加开发效率

特点详细示例:
表达式查询 对表达式查询转换为等效SQL语法,如:
var order = OrderManage.Instance.QueryItem(b=>b.Id==1 && b.UserId==2);
等效为
select * from Order where id=1 and UserId=2
更新删除同理


对象表自动创建 首次调用会自动创建对象对应的表,不需从数据库维护,也可以编程方式对表结构进行检查
缓存绑定 对任意基本查询可作数据缓存处理,设置过期时间后自动更新缓存,或直接创建当前对象数据缓存
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);//在内部缓存数据中查找

动态编译(仅MSSQL) 将任意查询/更新/删除操作自动编译为数据库等效存储过程,大大提高运行效率
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验证登录,并设定票据

多数据库支持 通过实现数据库适配器,实现多数据库支持
测试通过的数据库 MSSQL,MYSQL,ORACLE

框架&测试示例载图

百度盘下载地址:http://pan.baidu.com/s/1c0kwOFY

更详细说明见项目包

当前版本为测试版2,没有正式使用,可能有部份BUG,有问题请与我联系
...全文
2349 65 打赏 收藏 转发到动态 举报
写回复
用AI写文章
65 条回复
切换为时间正序
请发表友善的回复…
发表回复
hello_kill 2014-11-14
  • 打赏
  • 举报
回复
xusir98 2014-11-06
  • 打赏
  • 举报
回复
siiiii3 2014-11-02
  • 打赏
  • 举报
回复
积分积分 木有 积分
我现在在路上 2014-10-31
  • 打赏
  • 举报
回复
谢谢楼主分享,学习+接分
一枪尽骚丶魂 2014-10-31
  • 打赏
  • 举报
回复
额 这个是弄什么的呀
  • 打赏
  • 举报
回复
引用 56 楼 u012377333 的回复:
没分了,来接分?
http://files.cnblogs.com/humble/d.pdf this is good
  • 打赏
  • 举报
回复
看看这个不错. nice! http://files.cnblogs.com/humble/d.pdf
拜一刀 2014-10-31
  • 打赏
  • 举报
回复
正好要做网站,感谢楼主分享
一枪尽骚丶魂 2014-10-31
  • 打赏
  • 举报
回复
没分了,来接分?
hubro 2014-10-30
  • 打赏
  • 举报
回复
新版已支持差异更新,只是需要多点点内存,这是刚加的,不在发布项目里

//按对象差异更新
            var p = Code.ProductDataManage.Instance.QueryItem(b => b.Id >0);
            p.BarCode = "ssss" + DateTime.Now.Second;
            Code.ProductDataManage.Instance.Update(p);//按对象差异更新,对象需由查询创建
vanjoeyoung 2014-10-30
  • 打赏
  • 举报
回复
楼主分享的帖子真心不错,学习了
q1064878520 2014-10-30
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
要分
亿万斯年 2014-10-30
  • 打赏
  • 举报
回复
应楼主散分需要来接分
joyhen 2014-10-29
  • 打赏
  • 举报
回复
有码,非常感谢
海兰 2014-10-29
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
引用 22 楼 qgqchile 的回复:
不太清楚的问一下这个跟EF有什么本质上的区别么 ??
纠结“本质区别”之前,应该也同时先学会接受和学习。
  • 打赏
  • 举报
回复
江河的江 2014-10-29
  • 打赏
  • 举报
回复
接分
  • 打赏
  • 举报
回复
接分。。。。
加载更多回复(36)

62,050

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧