CYQ.Data 轻量数据层之路 华丽升级 V1.3出世(五)

继上一篇:CYQ.Data 轻量数据层之路 应用示例篇(四) 之后,有兴趣的读者可以放心使用及应用或练习了!

 

不过,在稳定版本之后,本人又进行了一次华丽的升级,升级记录如下:


1:MAction:增加ResetTable功能
2:MAction:增加在Update/Insert/Fill/ResetTable失败时,自动调用Close()
3:MAction:修改Fill方法:将之前如果填充时有多条记录返回失败,改成返回首条记录
4:MAction:增加SetAutoPrefix方法,可传多个控件前缀
5:MAction:Update方法开放自动获取控件值功能

6:MAction:关闭属性DataSQLHelper的返回
7:MProce:新出产类,用于存储过程操作
8:OutPutData:新增加对存储过程枚举的导出

9:OutPutData:增加ExeCreateProc方法用于直接执行生成分页存储过程

 

以下针对更新进说明:

 

1:增加ResetTable功能:减少New MAction的个数

同一个函数中,如果要用到多个表切换查询,你可能每次都要New一个MAction,于是为了减少New的个数,多了此函数,下面看一下用法:


        MAction action = new MAction(TableNames.Users);
        if(action.Fill("UserName='Cyq'"))
        {
            action.SetTo(labUserName);
            int id=action.Get<int>(Users.ID);
            if (action.ResetTable(TableNames.Message))
            {
                if (action.Fill("UserID=" + id))
                {
                    action.SetTo(labBody);
                }
            }
            action.Close();
        }

 

根据用户名获取完数据之后,取到用户ID,然后切换到消息留言表,根据用户ID填充取第一条数据。

 

2:增加在Update/Insert/Fill/ResetTable失败时,自动调用Close():改进后可省点代码

我们看一下上节示例代码登陆:


protected void btnLogin_Click(object sender, EventArgs e)
    {
        MAction action = new MAction(TableNames.Users);
        if(action.Fill(string.Format("UserName='{0}' and Password='{1}'", txtUserName.Text.Trim(), txtPassword.Text.Trim())))
        {
            Session["ID"] = action.Get<int>(Users.ID);
            action.Close();
            Response.Redirect("Default.aspx");
        }
        else
        {
            lbMsg.Text = "用户密码错误!";
            action.Close();
        }
    }

 

在没有改进之后,你会发现,代码里会出现两次的action.Close();

当然,如果中间没有出现Response.Redirect这么突然的转向,你可以把Action.Close()放到最后面去,这样也只有一条。

然而经过小小的改良后,就算有Response.Redirect,你也可以省略下面一个action.Close()了。

----就省略一行,看起来似乎不太咋的,可如果在多重if分支中使用,其效果就会变的相当的明显的,如:


MAction action = new MAction(TableNames.Users);
        if (action.Fill(1))
        {
           //省略N行代码
            if (action.Insert())
            {
                //省略N行代码
                if (action.Update())
                {
                    action.Close();
                }
            }
        }

 

这种情况下,你不用关注在失败时要关闭数据库链接,你只需要关注成功时,关闭就行了,

当然中间来个break/return/continue;就得注意点了。

 

3:MAction:修改Fill方法:有多条记录时返回失败,改成返回首条记录

在本版本之前,在Fill完之后,如果有多条记录,会返回false,本次修改返回首条记录:

因此,你甚至可以这样填充获取最后一条记录:


            MAction action = new MAction(TableNames.Message);
            if (action.Fill("UserID=2 order by id desc"))
            {
                action.SetTo(txtBody);
                action.Close();
            }

 

由于Fill后组合的是where语句,你可以增加order by 来排序获取尾条记录。

 

4:MAction:增加SetAutoPrefix方法,可传多个控件前缀
对于控件的自动取值,上一版本就已存在了,不过没有介绍相关用法,但上一版本只能对一种控件前缀取值如:


            MAction action = new MAction(TableNames.Message);
            action.AutoPrefix = "txt";
            if (action.Insert(true))
            {
                action.Close();
            }

 

以上操作能自动获取txt+字段名的控件的值;可是,我们一般情况下,控件的前缀是多种多样的,于是经过改良后:


            MAction action = new MAction(TableNames.Message);
            action.SetAutoPrefix("txt","ddl","lab");
            if (action.Insert(true))
            {
                action.Close();
            }

系统能自动获取界面上面三种前缀组合的控件值。同时去掉了AutoPrefix属性。

 

5:MAction:Update方法开放自动取控件值功能。

在此版本之前,Update方法没有开放自动取值功能,改良后开放了Update方法的自动取值功能,如:


            MAction action = new MAction(TableNames.Message);
            action.SetAutoPrefix("txt","ddl","lab");
            if (action.Update("id=1",true))
            {
                action.Close();
            }

 

 

6:MAction:关闭属性DataSQLHelper的返回

此版本之前,你可以通过action.DataSqlHelper获取到底层的SQLHelper对象。

之前开放是为了开放底层来操作存储过程。由于出产了MProc专业户处理存储过程,所以关闭属性了。

 

7:MProce:新出产类,存储过程操作专业户
用法简洁如下:


        MProc proc = new MProc(ProcNames.GetUserList);
        proc.AddParas(Users.ID, 1);
        gvProcUsers.DataSource=proc.ExeDataTable();
        gvProcUsers.DataBind();

        proc.ResetProc(ProcNames.GetMessageList);
        proc.AddParas(Message.UserID, 1);
        gvProcMessage.DataSource = proc.ExeDataTable();
        gvProcMessage.DataBind();

        proc.Close();

 

8:OutPutData:新增加对存储过程枚举的导出
通过此方法,生成存储过程枚举:

CYQ.Data.SQL.OutPutData write = new CYQ.Data.SQL.OutPutData();
Response.Write(write.OutPutAllTableEnum(CYQ.Data.SQL.OutPutData.TableType.P, CYQ.Data.SQL.OutPutData.FiledDescriptionType.Sql2005));

说明:

TableType.P:存储过程枚举
TableType.U:表枚举
TableType.V:视图枚举

如生成存储过程枚举如下:

public enum ProcNames
{
    GetMessageList,
    GetUserList,
}

 

9:OutPutData:增加ExeCreateProc方法用于直接执行生成的分页存储过程

 CYQ.Data.SQL.OutPutData write = new CYQ.Data.SQL.OutPutData();
 Response.Write(write.ExeCreateProc(CYQ.Data.SQL.OutPutData.FiledDescriptionType.Sql2005));

生成的存储过程会直接被执行到数据库中,不用再复制到数据库执行了。

 

OK,本次升级介绍到此结束,欢迎讨论、使用与留言!!!

最后提供华丽升级版本V1.3下载:点击下载[大小:60K 没加密没混淆没限制,可放心使用,可直接用Reflector.exe查看源码]

版权声明:本文原创发表于博客园,作者为路过秋天,原文链接:

http://www.cnblogs.com/cyq1162/archive/2010/08/20/1803391.html

时间: 2024-11-28 14:15:11

CYQ.Data 轻量数据层之路 华丽升级 V1.3出世(五)的相关文章

CYQ.Data 轻量数据层之路 华丽V1.3版本 框架开源

本篇对框架开源进行说明:   提前说明: 1:最近有很多友人没有留言就加群了,导致被拒绝,这此说声抱歉啦.    不过规则还是要遵守的,毕竟人数有限.    如果只是想着可有可无的看,下面有一份反编绎源码,基本也不影响高手查看了. 2:另外也有个别留了言没加群的,也只能说声音抱歉了,源码不会发到指定的邮箱.    源码会发送到指定邮箱的情况:仅限于公司名义,同时站内信有消息,才会特别去发邮件的.       本次开源针对最新版本V1.3版本,相关更新见:CYQ.Data 轻量数据层之路 华丽升级

CYQ.Data 轻量数据层之路 终极升级(二)

在上一篇:CYQ.Data 轻量数据层之路 开篇介绍(一)中,我们介绍了基本的类库与使用介绍.   上篇留言中虽然感觉好像很平静,不过不难想象,大伙仅勿勿一眼一扫而过的那种情景: 一个很沉重的心结,一直在很多开发人员的心里挥之不去:实体类. 大伙似乎都很排拆没有实体类的数据层框架,仅因早于习惯了ORM?   其实,我记得我第一次毕设的时候,也是有实体类的: 还记得很久前,毕设做的是仿QQ空间的CQ-Space空间,借用了CodeSmith生成实体类[里面集合了增删改查],来操作数据库, 也感受到

CYQ.Data 轻量数据层之路 使用篇一曲 裸身走天涯(十二)

其实本来是不想写使用帮助的,因为在以下的文章中,都有大量的示例存在:   CYQ.Data 轻量数据层之路 应用示例一 留言版(四) CYQ.Data 轻量数据层之路 华丽升级 V1.3出世(五) CYQ.Data 轻量数据层之路 应用示例二 在线聊天(六) CYQ.Data 轻量数据层之路 优雅V1.4 现世 附API帮助文档(九)   不过很多人还是很懒啊,一进群就用问怎么用. 发个文章路径让其看吧,又说太麻烦,使用复杂,于是想了想,还是写写使用教程,让这部分懒人速成一下.   当前最新版本

CYQ.Data 轻量数据层之路 SQLHelper 回头太难(八)

提前说明:正如网友反映的一样,为了不至于产生明显的误导,特别加了此首段说明 SQLHelper,几乎是每个过来者必经的阶段,写好一个SQLHelper是非常重要的一环,所以希望年轻的来者,要多加实践,别只看不动手,哪怕照着写一写,也是相当的有益. 对于本框架系列,希望年轻来者在掌握使用的同时,动手照着系列文章写一写,如果照着写出来的,相信成长不是一点半点的:别光看不练,最后只能忽悠却动不了手.       这篇文章很不好写,我在电脑前思索了一天,也不知怎么下手. 关于SQLHelper的文章遍地

CYQ.Data 轻量数据层之路 应用示例二 在线聊天(六)

继上一篇:CYQ.Data 轻量数据层之路 华丽升级 V1.3出世(五),本篇趁周末而且是下班时间看贴人不多,低调让其出手应用一下: 同样为了能一篇介绍完一个示例,我精简挑选了一下,本次的示例为:注册+登陆+在线聊天[省去了私聊部分] 在看此文示例之前,请先看:CYQ.Data 轻量数据层之路 应用示例篇(四) --因为注册+登陆从那直接Copy的,这节就省过了.   当前环境同样是:VS2005+SQL2005,以下进入正题: 一:数据库 起名:Chat 两个表:Users+Message,上

CYQ.Data 轻量数据层之路 继续狂热升级(三)

在上一篇:CYQ.Data 轻量数据层之路 终极升级(二) 之时,我通过新增加GetFrom与SetTo方法,来避免直接使用索引的取值和赋值的不便.   本来,今天是打算写个实例教程,来简单介绍用这个超轻量框架进行开发是有多轻松的事情,不过在使用时,还是发现了个别的小bug. 于是,今天狂热的修改了N多代码,抽取Sql组成部分到单独的类中,继续去掉N多重载方法,留下最简洁最实用的方法.   以面看看有哪些改进: 数据库配置假设如下: <connectionStrings>         &l

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

继上一版本V1.3版本发布到现在,时隔N天了:[V1.3版本开源见:CYQ.Data 轻量数据层之路 华丽V1.3版本 框架开源]   N天的时间,根据各路网友的反映及自身的想法,继续修改优化着本框架,力求让大伙相对满意: 对于:bug反馈.优化建议.及最新框架版本下载见:CYQ.Data 轻量数据层之路 bug反馈/优化建议/框架下载 升级说明: 本次升级只是针对易用性增加功能或优化代码及方法,并未发现V1.3版本存在任何bug, 因此,对于V1.3版本,大伙可放心使用,同时也已开放源码. 若

CYQ.Data 轻量数据层之路 优雅V1.4版本 框架开源

开源说明 本次开源针对最新版本V1.4版本,相关更新见:CYQ.Data 轻量数据层之路 优雅V1.4 现世 附API帮助文档(九) bug反馈.优化建议.及最新框架版本下载见:CYQ.Data 轻量数据层之路 bug反馈/优化建议/框架下载   相关产品 1:配套API帮助文档 2:配套辅助工具 3:配套使用说明   相关产品简略说明 1:API 文档截图一张   2:辅助工具截图一张   3:使用帮助 1:CYQ.Data 轻量数据层之路 使用篇一曲 裸身走天涯(十二) 2:CYQ.Data

CYQ.Data 轻量数据层之路 抢先体验版本功能说明演示 (二十九)

本系列所有文章索引:CYQ.Data 轻量数据层之路 框架开源系列 索引 本系列所有相关下载:CYQ.Data 轻量数据层之路 bug反馈.优化建议.最新框架下载 前言:   一直都是发布版本才写文章,这次为抢先体验版本[V2.5]做一下简单的功能介绍   以下进行功能更新说明[相比V2.0版本]: 1:修正DebugInfo属性在异常发生时无法取得操作语句的问题 2:MAction增加Bind方法可以轻松绑定DropDownList等控件 3:MDataTable增加ToList<T>泛型方