继上一版本V1.3版本发布到现在,时隔N天了:[V1.3版本开源见:CYQ.Data 轻量数据层之路 华丽V1.3版本 框架开源]

N天的时间,根据各路网友的反映及自身的想法,继续修改优化着本框架,力求让大伙相对满意:

对于:bug反馈、优化建议、及最新框架版本下载见:CYQ.Data 轻量数据层之路 bug反馈/优化建议/框架下载

升级说明:

  1. 本次升级只是针对易用性增加功能或优化代码及方法,并未发现V1.3版本存在任何bug
  2. 因此,对于V1.3版本,大伙可放心使用,同时也已开放源码。
  3. 若对于本V1.4版本改进功能感兴趣,也可尽情使用本版本dll
  4. 欢迎来客继续使用并留言参与讨论。

补充说明

V1.4版本辅助工具已经发布,详见:CYQ.Data 轻量数据层之路 优雅V1.4 辅助工具(十)

本次V1.4版本升级修改记录如下:

  1.  
  2. 1SQLHelper/DataType/Log 修改类访问修饰符,不对外开放
  3.  
  4. CYQ.Data 名称空间
  5. 1MProcExeScalar方法修改为泛型方法 public T ExeScalar<T>()
  6. 2MProc:由SQLHelper修改访问修饰不对外开放引起,继承变更为内置类。
  7. 3MProc:改返回DataTableMDataTable,隐藏掉返回的SqlDataReader
  8. 4MProc:修改几个方法名称,参数实现自动增加"@"前缀
  9. 5MAction:默认所有操作开启事务支持,直到调用Close()或EndTransation()或发生异常时,事务才结束。
  10. 6MAction:增加智能检测,构造函数不需要传入数据库配置项。多数据库应用时,约定枚举生成为:[[U/V/P]_+数据库名+Enum],配置文件数据库链接配置项为[数据库名+Conn]
  11.  
  12. CYQ.Data.SQL名称空间
  13. 1SQLHelper:增加事务支持
  14. 2SQLHelper:优化代码,删除没用到的方法
  15. 3SQLStringwhere条件过滤掉“--”注释号与";"分号
  16. 4OutPutData:增加对存储过程参数的导出
  17. 5OutPutData:增加对于多数据库项目的导出,对于表和视图的枚举导出修改成[[U/V/P]_数据库名+Enum]格式
  18.  
  19. 6OutPutData:增加生成日志表功能
  20. 7Log:修改WriteLog返回类型为void,在写数据库记录异常日志失败后时抛出异常
  21. 8DataType:合并数据类型转化方法为两个:GetDbTypeGetSqlType,同时注释掉其它附加方法
  22.  
  23. CYQ.Data.Table 名称空间
  24. 1MDataTable:增加ToDataTable功能
  25.  
  26.  
  27. CYQ.Data.Cache 名称空间
  28. 1CacheHelper:优化代码,减少代码行数
  29. 2CacheHelper:修改了几个函数名称
  30.  
  31. 其它
  32.  
  33. 同时制作与发布V1.4 API 使用帮助文档

 以下针对更新进说明

1:SQLHelper/DataType/Log 修改类访问修饰符,不对外开放

  1. 这个不用多解释了吧,就是通过CYQ.Data.SQL名称空间下,看不到这三个类了。

CYQ.Data 名称空间

一:MProc 存储过程操作类

1:因SQLHelper修改访问修饰不对外开放,继承方式变更为内置类

2:ExeScalar由返回object对象改成泛型方法,示例

  1. MProc proc = new MProc(ProcNames.GetFirstUserID);
  2. int userID=proc.ExeScalar<int>();
  3. proc.Close();

3:删除方法:ExeDataReader与ExeDataTable;增加方法:ExeMDataTable

示例

  1. MProc proc = new MProc(ProcNames.GetMessageList);
  2. MDataTable mtable= proc.ExeMDataTable();
  3. proc.Close();
  4. gvProcMessage.DataSource = mtable;
  5. gvProcMessage.DataBind();

4:方法名称修改:AddParas改成Set方法[并自动增加@前缀];ClearParas改成Clear

示例

  1.  
  2. MProc proc = new MProc(ProcNames.GetMessageList);
  3. proc.Set(GetMessageList.UserID, 1);//说明:OutPutData增加了对存储过程参数的枚举导出。
  4. MDataTable mtable = proc.ExeMDataTable();
  5. proc.Close();
  6. gvProcMessage.DataSource = mtable;
  7. gvProcMessage.DataBind();

二:MAction 主操作类

1:增加事务,并默认所有操作均开启事务,默认直到调用Close方法时提交事务。同时增加提前事务结束方法:EndTransation(),

示例1:

  1.  
  2.         MAction action = new MAction(TableNames.Users);
  3.         if (action.Fill(7))
  4.         {
  5.             action.Set(Users.UserName, "用户名被修改了");
  6.             if (action.Update())//第一步更新成功
  7.             {
  8.                 action.Set(Users.UserName, "aaaaaaaaaaa");
  9.                 if (action.Update("td>3"))//并不存在td字段,更新失败。自动调用Close(),事务被回滚
  10.                 {
  11.                     action.Close();
  12.                 }
  13.             }
  14.         }

示例2:

  1.  
  2.         MAction action = new MAction(TableNames.Users);
  3.         if (action.Fill(7))
  4.         {
  5.             action.Set(Users.UserName, "用户名被修改了");
  6.             if (action.Update())
  7.             {
  8.                 action.EndTransation();//提交结束事务,此时用户名称已修改成功。
  9.                 action.Set(Users.UserName, "aaaaaaaaaaa");
  10.                 if (action.Update("td>3"))//更新失败,不再引发事务。
  11.                 {
  12.                     action.Close();
  13.                 }
  14.             }
  15.         }

2:多数据库应用加强,增加表枚举约定数据库链接配置

对于多数据库应用,你仍可以使用以下的方法实例一个MAction

  1. MAction action = new MAction(TableNames.Users,"CYQ");

通过构造函数的重载实现新的数据库链接。

web.config对CYQ配置如下

  1.  
  2. <connectionStrings>
  3.     <add name="Conn" connectionString="server=.;database=Chat;uid=sa;pwd=123456"/>
  4.     <add name="CYQ" connectionString="server=192.168.1.48;database=CYQ;uid=sa;pwd=3dfe323ft"/>
  5. </connectionStrings>

当然,为了全局统一管理,你可能把"CYQ"设置成一个类的成员变量能传递,如下:

  1.  
  2. //数据库链接管理类
  3. public class DataBaseLink
  4. {
  5.         public const string CYQ = "CYQ";
  6.         public const string Other= "Other";
  7. } 
  8. //调用
  9. MAction action = new MAction(TableNames.Users, DataBaseLink.CYQ);

以上方式虽然可以做到,不过本次增加的约定方法,可以让你省略对数据库链接的管理,示例

  1. MAction action = new MAction(U_MessageEnum.Users);

对应的数据库链接配置为

  1. <add name="MessageConn" connectionString="server=.;database=Message;uid=sa;pwd=123456"/>

其约定为:

  1.         表约定:U_数据库名+Enum ->对应配置链接为 数据库名+Conn
  2.      视图约定:V_数据库名+Enum ->对应配置链接为 数据库名+Conn
  3. 存储过程约定:P_数据库名+Enum ->对应配置链接为 数据库名+Conn

当然了,简单的说其实不用管那么多,因为OutPutData已增加对其约定枚举的导出,详见下面的OutPutData相关介绍。

CYQ.Data.SQL 名称空间

一:SQLHelper 底层数据库操作类,已封剑归隐,假装不涉人世

1:增加底层对事务的支持

2:删除没用到的方法与属性如

  1. 方法:ExeDataTableExeXmlScalar
  2. 属性:Parameters

二:SQLString 内部SQL字符串组合类

  1. where条件增加对符号“--”及“;”的过滤

三:OutPutData 主要输出类,包括存储过程输出与执行/表视图存储过程枚举输出

1:增加对存储过程参数的导出

导出方法示例

  1. CYQ.Data.SQL.OutPutData data = new CYQ.Data.SQL.OutPutData("MessageConn");
  2. Response.Write(data.OutPutAllTableEnum(TableType.P,FiledDescriptionType.NoDescription,false));

导出结果示例

  1.  
  2. namespace MessageEnum
  3. {
  4.     public enum ProcNames{GetUserList,GetMessageList,GetFirstUserID}
  5.     #region 存储过程参数枚举
  6.     public enum GetUserList{ }
  7.     public enum GetMessageList{UserID }
  8.     public enum GetFirstUserID{}
  9.     #endregion
  10. }

2:多数据库方式,增加对约定方式的导出

导出方法示例,区别仅在最后一个参数设置为“true”

  1. CYQ.Data.SQL.OutPutData data = new CYQ.Data.SQL.OutPutData("MessageConn");
  2. Response.Write(data.OutPutAllTableEnum(TableType.P,FiledDescriptionType.NoDescription,true));

导出结果示例,区别仅在存储过程枚举名称

  1.  
  2. namespace MessageEnum {
  3. public enum P_MessageEnum {GetUserList,GetMessageList,GetFirstUserID}
  4. #region 存储过程参数枚举 
  5. public enum GetUserList { UserID}
  6. public enum GetMessageList { UserID}
  7. public enum GetFirstUserID { }
  8. #endregion
  9. } 

3:增加生成日志记录表方法

用法示例[如果该表已存在,则抛出异常提示]

  1. CYQ.Data.SQL.OutPutData data = new CYQ.Data.SQL.OutPutData("MessageConn");
  2. Response.Write(data.ExeCreateLogTable().ToString());

四:Log 数据库异常日志记录类

web.config配置示例

  1.  
  2. <appSettings>
  3.     <add key="IsWriteLog" value="true"/>
  4. </appSettings>
  5. <connectionStrings>
  6.     <add name="Conn" connectionString="server=.;database=Chat;uid=sa;pwd=123456"/>
  7.     <add name="LogConn" connectionString="Conn"/>
  8. </connectionStrings>

说明

  1. 1:如果记录日志,需要创建异常日志表用于记录[详见OutPutData关于创建日志记录表的用法]
  2. 2:在写数据库记录异常日志失败后或不启用日志记录时有异常则抛出
  3. 3:以上示例在链接库链接配置的链接字符串,设置为Conn表示取Conn配置文件的链接字符串。

五:DataType 数据库类型与C#类型转换类

  1. 合并方法并优化了代码,同时修改了内部方法名称。内部内不对外开放,不做过多解释了。

CYQ.Data.Table 名称空间

一:MDataTable 自定义的Table类,支持控件绑定

  1. 增加ToDataTable方法,对于需要用到Select/Fiter/或其它复杂操作时,可切换过去操作。

CYQ.Data.Cache 名称空间

一:CacheHelper 全局缓存类

  1.  
  2. 1:优化了代码,减少代码行数
  3. 2:修改几个方法名称
  4.  
  5. 使用示例:
  6.  实例化: CacheManage cache=CacheManage.Instance;
  7.  添加:   cache.Add("路过秋天",new MDataTable);
  8.  判断:   if(cache.Contains("路过秋天"))
  9.           {
  10.  获取:       MDataTable table=cache.Get("路过秋天") as MDataTable;
  11.           }

V1.4版本CYQ.Data.dll:点击下载

V1.4版本 API 帮助文档:点击下载

CYQ.Data 轻量数据层之路 优雅V1.4 现世 附API帮助文档(九)的更多相关文章

  1. CYQ.Data 轻量数据层之路 使用篇二曲 MAction 数据查询(十三)----002

    原文链接:https://blog.csdn.net/cyq1162/article/details/53303390 前言说明: 本篇继续上一篇内容,本节介绍所有相关查询的使用. 主要内容提要: 1 ...

  2. CYQ.Data 轻量数据层之路 使用篇-MProc 存储过程与SQL 视频[最后一集] H (二十八)

    2019独角兽企业重金招聘Python工程师标准>>> 说明: 本次录制主要为使用篇:CYQ.Data 轻量数据层之路 使用篇五曲 MProc 存储过程与SQL(十六)   的附加视 ...

  3. Web Scraper——轻量数据爬取利器

    日常学习工作中,我们多多少少都会遇到一些数据爬取的需求,比如说写论文时要收集相关课题下的论文列表,运营活动时收集用户评价,竞品分析时收集友商数据. 当我们着手准备收集数据时,面对低效的复制黏贴工作,一 ...

  4. CYQ.Data 批量添加数据性能测试(每秒千、万)

    今天有网友火晋地同学进了CYQ.Data官方群了,他正在折腾了一个各大ORM性能测试的比较的软件,如下图 折腾的种类也不少: 感觉这软件折腾的不错~~~值的期待~~~ 另外,他指出CYQ.Data 在 ...

  5. CYQ.Data 批量添加数据性能测试(每秒千、万)---003

    原文地址:https://www.cnblogs.com/cyq1162/p/3216267.html 今天有网友火晋地同学进了CYQ.Data官方群了,他正在折腾了一个各大ORM性能测试的比较的软件 ...

  6. SpringBoot18 Swagger、API接口文档生成、WireMock、模拟后台数据

    1 Swagger 1.1 简述 前后端分离的项目需要前后端开发人员协同工作,后台开发人员需要给到前端开发者一套API文档:利用Swagger可以简单高效的帮助后台开发者生成RestfulAPI开发文 ...

  7. iOS开发——数据持久化Swift篇&文件目录路径获取(Home目录,文档目录,缓存目录等)

    文件目录路径获取(Home目录,文档目录,缓存目录等)   iOS应用程序只能在自己的目录下进行文件的操作,不可以访问其他的存储空间,此区域被称为沙盒.下面介绍常用的程序文件夹目录:   1,Home ...

  8. 跟随屏幕滚动层、遮罩层、获取Div相对定位、整个屏幕、html文档的jquery基本操作

    一.层跟随屏幕滚动 <div style="width:120px;height:120px;border:1px solid red; position:absolute; left ...

  9. 轻量数据交换json,xml,ini

    json语法: object   {string:value,...} value   string/number/object/array/true/false/null array   value ...

随机推荐

  1. SyteLine实现字段过滤

    如果说某个下拉列表,想过滤某些选项,该怎样来做呢,在Infor Syteline实现起来是一件很容易的事情.如在Fixed Assets窗口中的Class Code的下拉列表中,如果不想"_ ...

  2. RDLC报表打印

    如果你的报表能正常显示,会看到RDLC工具条下的打印图标: 如果在客户端,第一次去点击此铵钮,如果当前操作者没有管理权限,会提示: Unable to load client print contro ...

  3. MySQL MHA配置常见问题

    MHA在MySQL数据库中被广泛使用,它小巧易用,功能强大,实现了基于MySQL replication架构的自手动主从故障转移,从库重定向到主库并自动同步.尽管如此,在部署配置的过程中,由于疏忽总难 ...

  4. LeetCode122:Best Time to Buy and Sell Stock II

    题目: Say you have an array for which the ith element is the price of a given stock on day i. Design a ...

  5. Eclipse常用的快捷键

    Eclipse常用快捷键 1,       Ctrl+S,保存文档. 2,       Tab,多行同时右移:选中多行 3,       shlft+tab,多行同时左移,选中多行 4,       ...

  6. 如何改变 FMX ListView 颜色

    需求:改变 ListView 颜色 适用:Firemonkey 任何平台 操作:Style 是改变控件外观最便捷的途径,ListView 也不例外,下面示范使用 StyleBook 来设定 ListV ...

  7. Rest风格中关于JPA使用懒加载的坑

    公司最近使用的ORM框架是JPA实现产品使用的是hibernate,曾经看过一篇博客上面说的是如果团队里面没有一个精通hibernate的人,那么最好不要使用它,我现在是深刻的体会到了.但是使用什么框 ...

  8. 优化JavaScripe 提升首页加载速度的几种方案解析

    优化目的: 1. 减少load量. 2. 优化js,加快页面加载速度. 网站中最影响网站打开速度的是什么?我会告诉是网站中的javascript,简称JS.模板中引用的JS文件越多,打开速度越慢,细读 ...

  9. 基本I/O模型与Epoll简介

    5种基本的I/O模型:1)阻塞I/O ;2)非阻塞I/O; 3)I/O复用(select和poll);4)信号驱动I/O(SIGIO);5)异步I/O(POSIX.1的aio_系列函数). 操作系统中 ...

  10. 对chain.doFilter(request,response)的理解

    他的作用是将请求转发给过滤器链上下一个对象.这里的“下”指的是哪里 ? 指的是下一个filter,如果没有filter那就是你请求的资源. 一般filter都是一个链,web.xml 里面配置了几个就 ...