• 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 帮助文档:点击下载

    版权声明:本文原创发表于 博客园,作者为 路过秋天 本文欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。
    个人微信公众号
    创业QQ群:617713515
    Donation(扫码支持作者):支付宝:
    Donation(扫码支持作者):微信:
  • 相关阅读:
    [Swift]LeetCode811. 子域名访问计数 | Subdomain Visit Count
    [Objective-C语言教程]程序结构(3)
    [Objective-C语言教程]开发环境设置(2)
    [Objective-C语言教程]简介(1)
    [Swift]LeetCode810. 黑板异或游戏 | Chalkboard XOR Game
    [Swift]LeetCode809. 情感丰富的文字 | Expressive Words
    [Swift]LeetCode808. 分汤 | Soup Servings
    转:用ANT执行SQL
    转:让开发自动化: 实现自动化数据库迁移
    转 让开发自动化: 使用自动化加速部署
  • 原文地址:https://www.cnblogs.com/cyq1162/p/1812621.html
Copyright © 2020-2023  润新知