CRL开发框架发布2.1版

CRL 2.1.0.0

  • CRL是一个面向对象的轻便型ORM业务框架

    • 数据处理使用了对象/数据映射,采用Lambda表达式来表示条件查询,增加了可编程性和可靠性,出错机率低,同时也能用原生的SQL实现查询或操作
    • 数据连接以编程方式进行配置,支持多个库,多种数据库类型,参见Global.asax中实现,首次使用请更改LocalSqlHelper.CreateDbHelper中数据连接
    • 通过业务对象封装继承,实现业务重用性,比较常用的封装有,会员/账户系统,字典配置,分类系统,在线支付,订单/购物车,权限验证/菜单系统等等,当然也可以写自已的业务封装
  • 效率问题:在对象映射上作了缓存处理,查询效率几乎等于手写SQL效率,注:CRL对象查询默认是 with(nolock)
  • 数据安全:所有标准查询都经过参数化处理,无注入风险
  • 动态编译:数据表自动创建/动态存储过程支持与查询转换,极大减少了数据库维护工作,增加开发效率
  • 日志绑定:通过CRL操作数据时发生错误,会生成详细的错误日志,包括执行的语句,参数,方便调试
  • CRL依赖CoreHelper.dll,此DLL是一个功能类库,包括数据访问,日志等功能
特点详细示例:
  • 新的开发模式

    • 传统开发需先设计表,再设计对象,CRL省略的这一步,直接设计对象,对象为主,数据表为辅,更符合面象向对象的开发模式
    • 无需额外工具生成实体类,按标准方式写即可,即写即用,运行后自动创建对象对应数据表
  • 调用简单 通过表达式查询转换为等效SQL语法,如: 
        继承实现业务类
        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);//在内部缓存数据中查找
                    
  • 动态编译(仅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 [email protected]
                    
  • 继承使用业务封装 通过继承对象或业务类型,调用内置业务封装或实现自已的业务封装,增加开发效率
        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
.Net Framework 4以上
建议配合MVC使用,面向对象开发会省很多事

项目文档截图:

时间: 2024-11-11 06:15:40

CRL开发框架发布2.1版的相关文章

CRL开发框架发布啦,一款面向对象的ORM业务框架

CRL是一个面向对象的轻便型ORM业务框架数据处理使用了对象/数据映射,数据操作采用Lamada表达式来表示,增加了可编程性和可靠性,出错机率低,同时也能用原生的SQL实现查询或操作数据连接以编程方式进行配置,支持多个数据库,参见Global.asax中实现,首次使用请更改LocalSqlHelper.CreateDbHelper中数据连接通过业务对象封装继承,实现业务重用性,比较常用的封装有,会员/账户系统,字典配置,分类系统,在线支付,订单/购物车,权限验证/菜单系统等等,当然也可以写自已的

CRL开发框架发布了,一款面向对象的ORM框架

CRL是一个面向对象的轻便型ORM业务框架数据处理使用了对象/数据映射,条件查询采用Lambda表达式来表示,增加了可编程性和可靠性,出错机率低,同时也能用原生的SQL实现查询或操作数据连接以编程方式进行配置,支持多个库,参见Global.asax中实现,首次使用请更改LocalSqlHelper.CreateDbHelper中数据连接通过业务对象封装继承,实现业务重用性,比较常用的封装有,会员/账户系统,字典配置,分类系统,在线支付,订单/购物车,权限验证/菜单系统等等,当然也可以写自已的业务

COCO-Android开发框架发布

一. COCO-Android说明 二. COCO-Android结构图 三. COCOBuild 四. COCOFrame 一.COCO-Android说明 1. COCO-Android是支撑Android原生开发的一个轻量级框架.包含COCOBuild和COCOFrame两个部分,可分别单独使用.其核心思想为抽取Android整个项目过程中(编码只是其中少部分工作)大量的重复性工作,采用自动化实现, 从而大幅度提高团队规范,开发效率,产品质量,降低开发成本. 2. COCOBuild为构建

51CTO博客发布H5移动版(适配手机)2017.5.17

各位,51CTO博客于5月17日发布H5移动版,可以适配手机和平板,分享文章到手机,阅读体验更佳,扫码可以进入(进入后,可以收藏到浏览器或展示在手机桌面,以后可以打开进入博客): 后续我们还会继续优化移动站的首页,也欢迎广大博友的建议和意见.

将 ASP.NET 5 应用作为 docker 镜像发布 (Linux版)

将 ASP.NET 5 应用作为 docker 镜像发布 (Linux版)? 提示 本文更新时间:2015年12月20日. 注解 如果你需要将 docker 镜像运行在Windows平台,或者使用在 Visual Studio 2015 上,请看稍后的一片博文(目前未发布) 将 ASP.NET 5 应用作为 docker 镜像发布 (Windows版) 创建 ASP.NET 5 项目? 首先,你需要一个已经完成的 ASP.NET 5 应用,如果还没有的话,可以参考 在 Mac OS 上创建的 A

微软Visual Studio二十周年:VS2017于3月7日发布 - 免费社区版/专业版/企业版

二十年前的今天,微软正式发布Visual Studio 97.如今二十年已经过去,微软宣布全新的Visual Studio 2017即将在美国当地时间3月7日正式发布. Visual Studio 2017 可支持 C#.C++.Python.Visual Basic.Node.js.HTML.JavaScript 等各大编程语言,不仅可编写 Windows 10 UWP 通用程序,甚至还能开发 iOS.Android 移动平台应用. 微软最新 VS 2017 开发工具 VS97是Visual

如何发布使用LGPL版Qt的商业软件

最近做跨平台图形用户界面库选型,权衡很多因素后最终选择了Qt,其中一个重要因素就是Qt使用LGPL授权许可.由于本人对LGPL理解有限,始终对闭源商业软件如何发布Qt库存在疑问,其中最关心的是:发布的商业软件中是否可以包含(或附带)Qt的动态链接库(dll,so).于是在网络上查找到如下相关资源: 官方的说法(查看原文“Qt: Making the right licensing decision”): LGPLThe LGPL is a license agreement written (a

苹果发布iOS8 GM版 iOS8 GM版固件下载地址汇总

iOS8 GM版正式发布,同步推已将iOS8 GM版固件下载地址整理到网盘,想要的体验的朋友可以下载固件刷机更新. iPhone6发布会结束后,苹果便向开发者发布了iOS8 GM版本固件,也就是最终测试版.该固件版本更加稳定完善,不需要开发者账号授权设备UDID激活,想要体验的朋友都可以试试看. 需要注意的是,iOS8 GM版本不支持OTA更新,心急的朋友可先下载iOS8 GM固件进行刷机.当然,也可等到9月17日iOS8正式版的发布再升级体验,效果是一样的. iOS8 GM版升级教程>>点击

基于Mono跨平台移动应用开发框架发布Xamarin 3.0

跨平台移动应用开发框架Xamarin可以让你完全用C#编写你的应用程序,在iOS.Android.Windows Phone 8.Windows8和mac平台上共享相同的代码.你可以重用你最喜欢的.NET库,而且还很容易地使用平台特定的库和框架.Xamarin提供了高性能编译的代码和完全访问所有本地API.所以Objective-C和Java能干的事,Xamarin的C#平台工具一样可以出色完成. Xamarin 在5月28日发布了Xamarin 3,主要有四个重要的变化. 首先,他们有了一个坚