CYQ.Data 轻量数据层之路 V4.5 版本发布[更好的使用体验,更优的缓存机制]

简介:

前言:

继上一版本:CYQ.Data 轻量数据层之路 V4.3 版本发布[增加对SQLite,MySQL数据库的支持]  ,至今已快近3个月了,中间仅有V4.5beta版本供下载,却没正式发布,今天,终于要把V4.5给发布了。

 

下面看一下新版本的修改记录

复制代码
实用:
1:MAction:Select方法增加重载:Select(string where);
2:FormatWhere处理了"Parent is null"的"is"关键字;处理"order by"语句补充为"1=1 order by ..."
3:MAction增加Exists方法
4:MDataRow 增加ToEntity<T>()方法转实体
5:允许更新Null值到数据库中
事务:
6:修正事务二次回滚的错误,即连续调用两次action.RollBack();
7:修正二次启动事务。
缓存:
8:缓存增加Set方法,无则添加,有则更新
9:大力修改Cache机制,使信息更容易查看.[定时清缓存]
其它:
10:MDataRow 重写Clear()方法,该方法将清除行的数据[即数据重置为Null]
11:AOP的End方法修改返回值为MDataRow和MDataTable结果集
12:修正OrmBase转实体时值为DBNull.Value的转换异常
复制代码

 

下面进行详细的解说

 

一:实用性功能介绍

 

1:MAction:Select方法增加重载:Select(string where)

 

在V4.3及之前版本,仅存在以下两个原型方法:

public MDataTable Select()

public MDataTable Select(int pageIndex, int pageSize, string where, out introwCount)

有很多人使用习惯:Select("where语句");然后发现where语句不起作用,全部数据都查出来了,然后纠结的问起这个问题。

 

原因:

不存在该重载方法。为何不报错?有点迷惑。

因为默认有Aop功能,该参数会变成Aop参数传给Aop功能使用,多数人不了解Aop,所以第一次使用上容易引发此问题。

本次增加了重载的方法,一来适应大众使用习惯,二来也消除掉一些迷惑。

 

2:FormatWhere处理了"Parent is null"的"is"关键字;处理"order by"语句补充为"1=1 order by ..."

 

问题1:action.Select(1,10,"parent is null",out count);

原因:会被解析成id="parent is null",因此条件将失败。

解决方法:action.Select(1,10,"1=1 and parent is null",out count);

可以的原因:因为有"="号或其它符号时,则不会被解析成ID=xxx的形式。

本次增加IS解析,解决了这个问题。

 

问题2:action.Select(1,10,"order by id desc",out count);

原因:内部组装为:“...where"+"order by id desc",SQL语句语法错误

解决方法:action.Select(1,10,"1=1 order by id desc",out count);

可以的原因:组成:"...where+“1=1 order by id desc",这样组装就正常能过了。

本次自动补充1=1前缀。以后可以放心的直写order by语句了。

 

3:MAction增加Exists方法

早期的判断:if(action.GetCount(where语句)>0){}来判断。

此次增加后判断:if(action.Exists(where语句)){},表达上看更前进了一些。

 

4:MDataRow 增加ToEntity<T>()方法转实体

在很多网友的使用中,还是有很多使用实体类的用户。

复制代码

CYQ.Data中可以通过:action.Select().ToList<T>(),将表转成实体类。

不过对于单行实体类,一直没此功能,此处增加功能后,即可:

if(action.Fill(id)){UserInfo info=action.Data.ToEntity<UserInfo>();}

可以填充后转实体类操作。

复制代码

 

5:允许更新Null值到数据库中

本次增加的功能,允许你设置:

action.Set(字段,null)或者action.Set(字段,DBNull.Value);

然后通过action.Update();将Null值更新回数据库。

 

二:事务

 

6:修正事务二次回滚的错误[连续调用两次action.RollBack()]

在之前版本中,连续调用两次action.RollBack()来回滚两次事务是会抛异常的,

虽然一般你不会这么做,但还是处理了一下。

 

7:修正二次启动事务

一个MAction中,如果你结束掉事务之后,是无法启动第二个事务的。

本次修正后可以在一个MAction中多次启用关闭事务。

 

三:缓存

 

8:9:本次版本升级到最新版本缓存机制。

相关的缓存使用说明见:CYQ.Data 数据框架 缓存使用帮助

 

四:其它

 

10:MDataRow 重写Clear()方法:该方法将清除行的数据[即数据重置为Null]

 

11:AOP的End方法修改返回值为MDataRow和MDataTable结果集

 

12:修正OrmBase转实体时值为DBNull.Value的转换异常

 

最后:

 

CYQ.Data 数据框架主页:http://www.cyqdata.com/cyqdata

CYQ.Data 数据框架下载:http://www.cyqdata.com/download/article-detail-426

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

http://www.cnblogs.com/cyq1162/archive/2011/05/06/2038712.html

相关文章
|
4月前
|
存储 缓存 前端开发
HTTP的缓存机制是什么?
HTTP的缓存机制是什么?
33 1
|
7月前
|
SQL 缓存 Java
Mybatis-plus缓存机制
MyBatis-Plus(简称MP)是一个基于MyBatis的增强工具,提供了更便捷的CRUD操作和其他功能。与MyBatis相比,MyBatis-Plus并没有引入自己的缓存机制,而是直接使用了MyBatis的缓存机制。 在MyBatis中,缓存分为一级缓存和二级缓存。 1. 一级缓存:一级缓存是SqlSession级别的缓存,它默认是开启的。当查询操作执行时,查询的结果会被缓存在SqlSession的内部数据结构中。如果后续再次执行相同的查询,MyBatis会先检查一级缓存中是否存在结果,如果存在则直接返回缓存的结果,而不会再次执行SQL语句。一级缓存的生命周期与SqlSession相同,
256 0
|
7月前
|
存储 缓存 Java
【面试题精讲】Java包装类缓存机制
【面试题精讲】Java包装类缓存机制
|
4天前
|
存储 缓存 运维
【Docker 专栏】Docker 镜像的分层存储与缓存机制
【5月更文挑战第8天】Docker 镜像采用分层存储,减少空间占用并提升构建效率。每个镜像由多个层组成,共享基础层(如 Ubuntu)和应用层。缓存机制加速构建和运行,通过检查已有层来避免重复操作。有效管理缓存,如清理无用缓存和控制大小,可优化性能。分层和缓存带来资源高效利用、快速构建和灵活管理,但也面临缓存失效和层管理挑战。理解这一机制对开发者和运维至关重要。
【Docker 专栏】Docker 镜像的分层存储与缓存机制
|
4月前
|
存储 消息中间件 缓存
redis的缓存机制
redis的缓存机制
100 0
|
10天前
|
缓存 NoSQL Java
17:缓存机制-Java Spring
17:缓存机制-Java Spring
23 5
|
11天前
|
存储 缓存 自然语言处理
深入PHP内核:探索Opcode缓存机制
【5月更文挑战第1天】 在动态语言如PHP的执行过程中,每次脚本被请求时都需要经过一系列复杂的解析和编译步骤。为了优化这一过程并提高性能,PHP引入了Opcode缓存机制。本文将详细探讨Opcode的概念、作用以及它如何显著提升PHP应用的执行效率。我们将从缓存原理出发,分析几种常见的Opcode缓存工具,并通过实例说明如何在实际项目中实现和优化缓存策略。
|
12天前
|
缓存 NoSQL PHP
【PHP开发专栏】PHP缓存机制与实现
【4月更文挑战第29天】本文介绍了PHP缓存的基本概念、策略及实现方式。PHP缓存包括应用缓存、Web服务器缓存、数据库缓存和分布式缓存,常见策略有缓存预热、更新和懒加载。PHP的缓存实现包括文件缓存、APC、OPcache、Memcached和Redis。最佳实践包括缓存热点数据、控制粒度、设置失效策略、保证一致性和确保安全性。文中还提供了一个新闻列表和详情页的缓存实战示例,帮助开发者理解如何在实际项目中应用缓存。
|
18天前
|
缓存 流计算
缓存命中率和过期机制的一般思路
【4月更文挑战第20天】缓存命中率是评估缓存效果的关键,目标是达到90%以上,但某些频繁的小请求场景可能无法实现。过期机制可采用定时删除(精确但开销大)、延迟队列(精确但有队列开销)、懒惰删除(简单但时间不精确)或定期删除(简单但性能损耗不可控)。
19 4
|
18天前
|
缓存 Linux
linux系统缓存机制
linux系统缓存机制