OracleCYQ.Data 轻量数据层之路 V4.0 版本公布

前言:

继正式公布V3.5到现在,刷的一弹指又二个半月过去了,而框架随着“秋色园-QBlog博客”一起成人,始终没为止脚步!!!

框架的重点成长在CYQ.Xml名称空间下成长的较多,好多细节的修改,没写什么日记记录,所以本文介绍的故事情节相对较少。

上边就介绍下V4.0中有日记记录部分的换代。

 

此次版本升级记录:

1:伸张对Case语句的一大半据库处理

2:MAction:开放DalType属性,允许获取当前操作的数据库类型

3:Pager:消除分页存储进程order by参数过长难题,参数加长

4:修正Pager的Access数据库分页,并行使二遍top格局分页

5:改良bit类型对“1”的变换为true

6:修改自定义表语句询问无多少时,也回到表架构

7:Xml类里扩大翼虎SS成效

8:Proc 校订从sql切换来存储进程的bug

9:其余,随着秋色园一起成长优化的CYQ.Xml名称空间下的多少个类。

 

以下对升官记录进行详解

** 


一:Case语句的多数据库处理

秋色园的支出中,又赶上3个索要用到Case语句的sql,因而,在思考良久之后,增添了Case语法的多语句处理,和后边语句一样的用法,关键字写成[#关键字],即可。

 

示范代码:节选自秋色园

string
orderByKey = string.Format(“{0}+[#CASE] [#WHEN] languageID={1}
[#THEN] {2} [#ELSE] 0 [#END]”, key,
(int)Language.LanKey, (isHits ?
1000 : 100));

说明:

无异于的话语可以在Access、Mssql、Oracle中运维,怎么样分析就是框架之中的政工了。

若果要求变成平时的说话,只要求把[#]轮换掉即可。

 

二:MAction:开放DalType属性,允许获取当前操作的数据库类型

因而伸张的盛开性质,使你在运用多数据库辅助时,除了主要字解析方法之外,还足以行使分支语句。

以身作则代码:

       
public void Demo()
        {
            using (MAction action = new
MAction(TableNames.Blog_Content))
            {
                switch (action.DalType)
                {
                    case CYQ.Data.DAL.DalType.Access:
                        //do access something
                        break;
                    case CYQ.Data.DAL.DalType.Oracle:
                        //do Oracle something
                        break;
                    case CYQ.Data.DAL.DalType.Sql:
                        //do Sql something
                        break;
                }
            }
        }}
}

 

三:Pager:消除分页存储进程order by参数过长难点,参数加长

缘由说明:

框架之中提供的MSSQL的分页存储进度中,有一条原始的话语:cast(@OrderBy
as nvarchar)

当order by
语句条件很复杂十分短时,长度不够[暗中认同好像是五十一个长度]将吸引难题,因而,

框架之中长度改成400个长度如下:cast(@OrderBy as
nvarchar(400))

若是遇上了,请留心一下。

 

四:勘误Pager的Access数据库分页,并应用壹遍top格局分页

事先的Access内部top
max情势分页在行使自定义表且条件复杂的事态下,分页结果出现了不怎么错事。

于是其中纠正时使用了另两种分页语句:一种是not in分页,另一种是二次top。

在没有多少相比的图景下,使用了not in,并在秋色园中不断了一段时间。

前些天发现秋色园的分页速度有点慢,于是切到一次top查询分页,速度刷的立刻上来了。

 

五:校对bit类型对“1”的变换为true

对此bit类型,有时候取/设值为是1或0,这次版本包容数字型自动转载为true与false。

 

六:修改自定义表语句询问无多少时,也回到表架构

这一次要求的源于始于秋色园的保管后台,因为后台使用古板的webform开发格局,在列表页上彰显,当没有多少时,发现表头也并未。

于是乎伸张在询问战败或无数据时,自动填写再次来到的MDataTable,使之结构全部。

 

七:Xml类里扩张RAV4SS成效

数码框架里的CR-VSS类,比笔者事先公布的小说:实战篇-六十六行成功简洁的中华Vss输出类
要多出多少代码,因为考虑到和框架之中MDataTable的组合使用。

示范代码:节选自秋色园-完整本田CR-VSS处理逻辑

Oracle 1Oracle 2

        public string GetRss(int cacheTime)
        {
            string cacheKey = “rss_” + DomainID;
            object outXml = Cache.Get(cacheKey);
            if (outXml != null)
            {
                return outXml.ToString();
            }
            else
            {
                Rss rss = new Rss();
                MutilLanguage seoDoc = new MutilLanguage(MapPath(Config.GlobalSkinPath + IDPage.SiteTitle),true,false);
                if (DomainID == 0)//系统Rss
                {
                    rss.Set(seoDoc.Get(IDLang.sitetitle) + ” – ” + seoDoc.Get(IDLang.powerby), Config.HttpHost, seoDoc.Get(IDLang.description));
                }
                else//用户Rss
                {
                    string title =GetLangText(IsUserLang,DomainUser.Get<string>(Users.SpaceName));
                    if (string.IsNullOrEmpty(title))
                    {
                        title = GetLangText(IsUserLang,DomainUser.Get<string>(Users.UserName));
                    }
                    rss.Set(title + ” – ” + seoDoc.Get(IDLang.sitename), Config.HttpHost + “/” + Domain, DomainUser.Get<string>(Users.SpaceIntro));
                }
                rss.SetImg(Config.HttpHost +Config.SystemTechSkinPath+”images/logo_”+seoDoc.LanKey.ToString().Substring(3)+”.jpg”, seoDoc.Get(IDLang.sitetitle) + ” Logo”, Config.HttpHost);
                string sql = CustomSQL.Rss + (DomainID > 0 ? ” and UserID=” + DomainID : “”);
                using (MProc proc = new MProc(sql))
                {
                    rss.LoadData(proc.ExeMDataTable());
                    rss.SetMap(RssItemName.Title, null, Content.Title);
                    rss.SetMap(RssItemName.Link, Config.HttpHost + “/{0}/article-detail-{1}”, Users.UserName, Content.ID);
                    rss.SetMap(RssItemName.Author, null, Users.NickName);
                    rss.SetMap(RssItemName.PubDate, null, Content.CreateTime);
                    rss.SetMap(RssItemName.Description, null, Content.Body);
                }
                string xml = rss.OutXml;
                Cache.Add(cacheKey, xml, null, cacheTime);
                return xml;
            }
        }

 

 

八:Proc 修正从sql切换来存储进度的bug

在应用MProc时,执行完存储进度之后,通过mproc.ResetProc(“sql语句”)切换来sql执行时,会唤醒失利。
本版本修正了这一小bug。

 

九:框架全部的优化

在秋以园的支出中,经过不断的重构及优化,框架之中会有更的底细修改,以便能适应更加多的状态,但并不影响以前的机能。

出于考虑到CYQ.Xml方面采取的人不多,所以日志记录也针锋绝对较少。

只是关键说一句,在秋色园的完好应用中,CYQ.Xml名称空间下的类,是骨干应用成员,希望大家伙空多关怀下那上头的利用。

 

十:V4.0框架下载

下载地址:下载中央-秋色园

 

上一篇小说:QBlog博客 V2.5 版本发表增添健康频道[支撑多语言、多用户、多数据库、目录级UTucsonL]

 

继续,会写一两篇CYQ.Xml上面的应用示范小说,欢迎大家关注下。

相关文章