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

前言:

进而正式发布V3.5到今,刷的瞬间并且1个半月份过去了,而框架随着“秋色园-QBlog博客”一起成长,始终未曾停下脚步!!!

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

下面就介绍下V4.0受到发出日记记录有的换代。

 

本次版本升级记录:

1:增加对Case语词之大多数据库处理

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

3:Pager:解决分页存储过程order by参数过长题目,参数加长

4:修正Pager的Access数据库分页,并采用3次等top方式分页

5:修正bit类型对“1”的变为true

6:修改由定义表语句询问无数据经常,也归表架构

7:Xml类里添RSS功能

8:Proc 修正从sql切换至囤过程的bug

9:其它,随着秋色园一起成长优化的CYQ.Xml名称空间下之几乎独八九不离十。

 

以下对升官记录进行详解

** 


同等:Case语句子之绝大多数据库处理

在秋色园的开支被,又遇见一个内需用到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
语句极大复杂很丰富时,长度不够[默认好像是50独长]将引发问题,因此,

框架内长度改变成为400独长如下:cast(@OrderBy as
nvarchar(400))

倘遇了,请小心一下。

 

季:修正Pager的Access数据库分页,并下3不善top方式分页

前面的Access内部top
max方式分页在应用于定义表且条件复杂的事态下,分页结果出现了聊大过。

乃其中修正时采取了另两种分页语句:一栽是not in分页,另一样种植是3糟top。

于尚未多少比的情况下,使用了not in,并在秋色园中不断了一段时间。

前几乎龙发现秋色园的分页速度有点慢,于是切及3涂鸦top查询分页,速度刷的瞬间上了。

 

五:修正bit类型对“1”的转换为true

于bit类型,有时候取/设值为是1或0,本次版本兼容数字型自动转发为true与false。

 

六:修改由定义表语句询问无多少常常,也回表架构

此次需求的来始为秋色园的保管后台,因为后台使用传统的webform开发方式,在列表页上显示,当没数量经常,发现表头也尚无。

乃加在查询失败或无数据常常,自动填写返回的MDataTable,使之结构完整。

 

七:Xml类里多RSS功能

多少框架里的RSS类,比我前面发表的文章:实战篇-六十六推行就简洁的Rss输出接近
要多发生有些代码,因为考虑到与框架之中MDataTable的组成使用。

以身作则代码:节选自秋色园-完整RSS处理逻辑

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 版本发布
增加健康频道[支撑多语言、多用户、多数据库、目录级URL]

 

持续,会写一两篇CYQ.Xml点的以示范文章,欢迎大家关心下。

相关文章