CYQ.Data 轻量数据层之路 优雅V1.4 现世 附API帮助文档(九)
继上一版本V1.3版本发布到现在,时隔N天了:[V1.3版本开源见:CYQ.Data 轻量数据层之路 华丽V1.3版本 框架开源]
N天的时间,根据各路网友的反映及自身的想法,继续修改优化着本框架,力求让大伙相对满意:
对于:bug反馈、优化建议、及最新框架版本下载见:CYQ.Data 轻量数据层之路 bug反馈/优化建议/框架下载
升级说明:
本次升级只是针对易用性增加功能或优化代码及方法,并未发现V1.3版本存在任何bug,
因此,对于V1.3版本,大伙可放心使用,同时也已开放源码。
若对于本V1.4版本改进功能感兴趣,也可尽情使用本版本dll。
欢迎来客继续使用并留言参与讨论。
补充说明:
V1.4版本辅助工具已经发布,详见:CYQ.Data 轻量数据层之路 优雅V1.4 辅助工具(十)
本次V1.4版本升级修改记录如下:
1:SQLHelper/DataType/Log 修改类访问修饰符,不对外开放 CYQ.Data 名称空间
1:MProc:ExeScalar方法修改为泛型方法 public T ExeScalar<T>()
2:MProc:由SQLHelper修改访问修饰不对外开放引起,继承变更为内置类。
3:MProc:改返回DataTable为MDataTable,隐藏掉返回的SqlDataReader
4:MProc:修改几个方法名称,参数实现自动增加"@"前缀
5:MAction:默认所有操作开启事务支持,直到调用Close()或EndTransation()或发生异常时,事务才结束。
6:MAction:增加智能检测,构造函数不需要传入数据库配置项。多数据库应用时,约定枚举生成为:[[U/V/P]_+数据库名+Enum],配置文件数据库链接配置项为[数据库名+Conn] CYQ.Data.SQL名称空间
1:SQLHelper:增加事务支持
2:SQLHelper:优化代码,删除没用到的方法
3:SQLString:where条件过滤掉“--”注释号与";"分号
4:OutPutData:增加对存储过程参数的导出
5:OutPutData:增加对于多数据库项目的导出,对于表和视图的枚举导出修改成[[U/V/P]_数据库名+Enum]格式 6:OutPutData:增加生成日志表功能
7:Log:修改WriteLog返回类型为void,在写数据库记录异常日志失败后时抛出异常
8:DataType:合并数据类型转化方法为两个:GetDbType和GetSqlType,同时注释掉其它附加方法 CYQ.Data.Table 名称空间
1:MDataTable:增加ToDataTable功能
CYQ.Data.Cache 名称空间
1:CacheHelper:优化代码,减少代码行数
2:CacheHelper:修改了几个函数名称 其它 同时制作与发布V1.4 API 使用帮助文档
以下针对更新进说明
1:SQLHelper/DataType/Log 修改类访问修饰符,不对外开放
这个不用多解释了吧,就是通过CYQ.Data.SQL名称空间下,看不到这三个类了。
CYQ.Data 名称空间
一:MProc 存储过程操作类
1:因SQLHelper修改访问修饰不对外开放,继承方式变更为内置类
2:ExeScalar由返回object对象改成泛型方法,示例
MProc proc = new MProc(ProcNames.GetFirstUserID);
int userID=proc.ExeScalar<int>();
proc.Close();
3:删除方法:ExeDataReader与ExeDataTable;增加方法:ExeMDataTable
示例
MProc proc = new MProc(ProcNames.GetMessageList);
MDataTable mtable= proc.ExeMDataTable();
proc.Close();
gvProcMessage.DataSource = mtable;
gvProcMessage.DataBind();
4:方法名称修改:AddParas改成Set方法[并自动增加@前缀];ClearParas改成Clear
示例
MProc proc = new MProc(ProcNames.GetMessageList);
proc.Set(GetMessageList.UserID, 1);//说明:OutPutData增加了对存储过程参数的枚举导出。
MDataTable mtable = proc.ExeMDataTable();
proc.Close();
gvProcMessage.DataSource = mtable;
gvProcMessage.DataBind();
二:MAction 主操作类
1:增加事务,并默认所有操作均开启事务,默认直到调用Close方法时提交事务。同时增加提前事务结束方法:EndTransation(),
示例1:
MAction action = new MAction(TableNames.Users);
if (action.Fill(7))
{
action.Set(Users.UserName, "用户名被修改了");
if (action.Update())//第一步更新成功
{
action.Set(Users.UserName, "aaaaaaaaaaa");
if (action.Update("td>3"))//并不存在td字段,更新失败。自动调用Close(),事务被回滚
{
action.Close();
}
}
}
示例2:
MAction action = new MAction(TableNames.Users);
if (action.Fill(7))
{
action.Set(Users.UserName, "用户名被修改了");
if (action.Update())
{
action.EndTransation();//提交结束事务,此时用户名称已修改成功。
action.Set(Users.UserName, "aaaaaaaaaaa");
if (action.Update("td>3"))//更新失败,不再引发事务。
{
action.Close();
}
}
}
2:多数据库应用加强,增加表枚举约定数据库链接配置
对于多数据库应用,你仍可以使用以下的方法实例一个MAction
MAction action = new MAction(TableNames.Users,"CYQ");
通过构造函数的重载实现新的数据库链接。
web.config对CYQ配置如下
<connectionStrings>
<add name="Conn" connectionString="server=.;database=Chat;uid=sa;pwd=123456"/>
<add name="CYQ" connectionString="server=192.168.1.48;database=CYQ;uid=sa;pwd=3dfe323ft"/>
</connectionStrings>
当然,为了全局统一管理,你可能把"CYQ"设置成一个类的成员变量能传递,如下:
//数据库链接管理类
public class DataBaseLink
{
public const string CYQ = "CYQ";
public const string Other= "Other";
}
//调用
MAction action = new MAction(TableNames.Users, DataBaseLink.CYQ);
以上方式虽然可以做到,不过本次增加的约定方法,可以让你省略对数据库链接的管理,示例
MAction action = new MAction(U_MessageEnum.Users);
对应的数据库链接配置为
<add name="MessageConn" connectionString="server=.;database=Message;uid=sa;pwd=123456"/>
其约定为:
表约定:U_数据库名+Enum ->对应配置链接为 数据库名+Conn
视图约定:V_数据库名+Enum ->对应配置链接为 数据库名+Conn
存储过程约定:P_数据库名+Enum ->对应配置链接为 数据库名+Conn
当然了,简单的说其实不用管那么多,因为OutPutData已增加对其约定枚举的导出,详见下面的OutPutData相关介绍。
CYQ.Data.SQL 名称空间
一:SQLHelper 底层数据库操作类,已封剑归隐,假装不涉人世
1:增加底层对事务的支持
2:删除没用到的方法与属性如
方法:ExeDataTable:ExeXmlScalar
属性:Parameters
二:SQLString 内部SQL字符串组合类
对where条件增加对符号“--”及“;”的过滤
三:OutPutData 主要输出类,包括存储过程输出与执行/表视图存储过程枚举输出
1:增加对存储过程参数的导出
导出方法示例
CYQ.Data.SQL.OutPutData data = new CYQ.Data.SQL.OutPutData("MessageConn");
Response.Write(data.OutPutAllTableEnum(TableType.P,FiledDescriptionType.NoDescription,false));
导出结果示例
namespace MessageEnum
{
public enum ProcNames{GetUserList,GetMessageList,GetFirstUserID}
#region 存储过程参数枚举
public enum GetUserList{ }
public enum GetMessageList{UserID }
public enum GetFirstUserID{}
#endregion
}
2:多数据库方式,增加对约定方式的导出
导出方法示例,区别仅在最后一个参数设置为“true”
CYQ.Data.SQL.OutPutData data = new CYQ.Data.SQL.OutPutData("MessageConn");
Response.Write(data.OutPutAllTableEnum(TableType.P,FiledDescriptionType.NoDescription,true));
导出结果示例,区别仅在存储过程枚举名称
namespace MessageEnum {
public enum P_MessageEnum {GetUserList,GetMessageList,GetFirstUserID}
#region 存储过程参数枚举
public enum GetUserList { UserID}
public enum GetMessageList { UserID}
public enum GetFirstUserID { }
#endregion
}
3:增加生成日志记录表方法
用法示例[如果该表已存在,则抛出异常提示]
CYQ.Data.SQL.OutPutData data = new CYQ.Data.SQL.OutPutData("MessageConn");
Response.Write(data.ExeCreateLogTable().ToString());
四:Log 数据库异常日志记录类
web.config配置示例
<appSettings>
<add key="IsWriteLog" value="true"/>
</appSettings>
<connectionStrings>
<add name="Conn" connectionString="server=.;database=Chat;uid=sa;pwd=123456"/>
<add name="LogConn" connectionString="Conn"/>
</connectionStrings>
说明
1:如果记录日志,需要创建异常日志表用于记录[详见OutPutData关于创建日志记录表的用法]
2:在写数据库记录异常日志失败后或不启用日志记录时有异常则抛出
3:以上示例在链接库链接配置的链接字符串,设置为Conn表示取Conn配置文件的链接字符串。
五:DataType 数据库类型与C#类型转换类
合并方法并优化了代码,同时修改了内部方法名称。内部内不对外开放,不做过多解释了。
CYQ.Data.Table 名称空间
一:MDataTable 自定义的Table类,支持控件绑定
增加ToDataTable方法,对于需要用到Select/Fiter/或其它复杂操作时,可切换过去操作。
CYQ.Data.Cache 名称空间
一:CacheHelper 全局缓存类
1:优化了代码,减少代码行数
2:修改几个方法名称 使用示例:
实例化: CacheManage cache=CacheManage.Instance;
添加: cache.Add("路过秋天",new MDataTable);
判断: if(cache.Contains("路过秋天"))
{
获取: MDataTable table=cache.Get("路过秋天") as MDataTable;
}
V1.4版本CYQ.Data.dll:点击下载
V1.4版本 API 帮助文档:点击下载
CYQ.Data 轻量数据层之路 优雅V1.4 现世 附API帮助文档(九)的更多相关文章
- CYQ.Data 轻量数据层之路 使用篇二曲 MAction 数据查询(十三)----002
原文链接:https://blog.csdn.net/cyq1162/article/details/53303390 前言说明: 本篇继续上一篇内容,本节介绍所有相关查询的使用. 主要内容提要: 1 ...
- CYQ.Data 轻量数据层之路 使用篇-MProc 存储过程与SQL 视频[最后一集] H (二十八)
2019独角兽企业重金招聘Python工程师标准>>> 说明: 本次录制主要为使用篇:CYQ.Data 轻量数据层之路 使用篇五曲 MProc 存储过程与SQL(十六) 的附加视 ...
- Web Scraper——轻量数据爬取利器
日常学习工作中,我们多多少少都会遇到一些数据爬取的需求,比如说写论文时要收集相关课题下的论文列表,运营活动时收集用户评价,竞品分析时收集友商数据. 当我们着手准备收集数据时,面对低效的复制黏贴工作,一 ...
- CYQ.Data 批量添加数据性能测试(每秒千、万)
今天有网友火晋地同学进了CYQ.Data官方群了,他正在折腾了一个各大ORM性能测试的比较的软件,如下图 折腾的种类也不少: 感觉这软件折腾的不错~~~值的期待~~~ 另外,他指出CYQ.Data 在 ...
- CYQ.Data 批量添加数据性能测试(每秒千、万)---003
原文地址:https://www.cnblogs.com/cyq1162/p/3216267.html 今天有网友火晋地同学进了CYQ.Data官方群了,他正在折腾了一个各大ORM性能测试的比较的软件 ...
- SpringBoot18 Swagger、API接口文档生成、WireMock、模拟后台数据
1 Swagger 1.1 简述 前后端分离的项目需要前后端开发人员协同工作,后台开发人员需要给到前端开发者一套API文档:利用Swagger可以简单高效的帮助后台开发者生成RestfulAPI开发文 ...
- iOS开发——数据持久化Swift篇&文件目录路径获取(Home目录,文档目录,缓存目录等)
文件目录路径获取(Home目录,文档目录,缓存目录等) iOS应用程序只能在自己的目录下进行文件的操作,不可以访问其他的存储空间,此区域被称为沙盒.下面介绍常用的程序文件夹目录: 1,Home ...
- 跟随屏幕滚动层、遮罩层、获取Div相对定位、整个屏幕、html文档的jquery基本操作
一.层跟随屏幕滚动 <div style="width:120px;height:120px;border:1px solid red; position:absolute; left ...
- 轻量数据交换json,xml,ini
json语法: object {string:value,...} value string/number/object/array/true/false/null array value ...
随机推荐
- 在Winform界面中实现对多文档窗体的参数传值
在Winform界面中窗体我们一般使用多文档进行展示,也就是类似一般的选项卡的方式可以加载多个窗体界面.一般来说,我们如果打开新的窗体,给窗体传递参数是很容易的事情,但是在框架层面,一般的窗体是通过动 ...
- 国产达梦数据库的结合Enterprise Library的应用开发
在上篇<基于Enterprise Library的Winform开发框架实现支持国产达梦数据库的扩展操作>介绍了如何在Enterprise Library的数据访问层上支持这种神秘的国产数 ...
- C#将集合快速排序
C#实现集合排序类. 说明: 1.集合类型参数化: 2.可根据集合中的对象的各个属性进行排序,传入属性名称即可: 注:属性必须实现了IComparable接口,C#中int.datetime.stri ...
- WebForm 基础
IIS安装 webForm需要IIS安装 1.安装:控制面板--程序或功能--打开或关闭windows功能--Internet信息服务(打上勾)--确定 2.让vs和IIS相互认识vs:vs2012- ...
- android 开发环境搭建
http://www.cnblogs.com/bjzhanghao/archive/2012/11/14/2769409.html http://jingyan.baidu.com/article/7 ...
- 微信--获取access_token
今天,终于鼓足勇气,来到这片圣地,迎来人生新的开始. 第一次...... 最近做微信公众号,记录一下,仅供参看. 关于access_token微信公众号有相关说明: access_token是公众号的 ...
- 【C#进阶系列】19 可空值类型
可空值类型,正如字面意义上的,是可以为NULL的值类型. 这个东西存在的意义可以解决比如数据库的的Int可以为NUll的情况,使得处理数据库数据更简单. 实际上可空值类型就是Nullable<T ...
- Extjs 窗体居中,双重窗体弹出时清除父窗体的鼠标事件
这个是监控窗体缩放的事件 缩放中居中主要在 'beforeshow' 和 'destroy'两个事件里面监控 var EditTempWindow; Ext.EventManager.onWindow ...
- Vue从零开始(一)
一.什么是Vue? Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的 渐进式框架.与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计.Vue 的核心库只关注视图层 ...
- php ci 2.0框架 ORM
很早知道ci出了2.0版本了.这几天正好有项目要用ci开发 虽然项目不大.不过也从开发项目的过程中熟悉了CI框架 因为是个电商项目 本来想用个YII2 的. 封装的虽然厉害不过功能强大 因为另个兄弟坚 ...