Newlife XCode组件相关文章目录:http://www.cnblogs.com/asxinyu/p/4329747.html
1.前言
声明:此Newlife.XCode非Mac的XCode,避免误会。
1.QQ群:1600800
使用XCode已经3年了,谈不上精通,都是些基础功能使用,以前源码啃过很多次,了解过部分功能的实现细节,但终归是要应用的,当没有时间时,了解使用就可以了,所以现在更多关注业务相关的东西,数据库操作,XCode已经很完善了。本文就对这几年应用过程的一些问题,以及很多人经常问起来的问题进行一个总结。今天就介绍2个主要的,比较常见的使用:表达式查询,实体数据初始化。
我们将在下一篇博客中重点介绍更加重量级的分库分表功能,以及通用配置辅助类的使用。敬请关注。
如果文章或者资源对您有用,请“推荐”和关注,接下来还有很多.NET平台关于机器学习、彩票分析平台和预测的文章和资源待发表。
本文原始地址:http://www.cnblogs.com/asxinyu/p/4248281.html
2.简洁优雅的查询
XCode对查询语法和灵活性是我见过的ORM中最优雅的,最简单体贴的。XCode由于支持多种数据库,并且效率很高的原因就是在这些数据库核心操作的背后有许多精巧的设计,其支持的查询就是XCode灵活强大的表现之一,每天写着重复的sql,调试,拼接参数,真的很累,那么看看XCode中的查询,真的是赏心悦目,是一种享受吧。首先对XCode的查询语法进行一个简单的总结和描述:
1) XCode的查询很灵活,可以针对单个字段,也可以针对多个字段;例如:
1 var model1 = Find(_.Name, "中国"); 2 //下面2个结果是一样的,用的方法不一样 3 var model2 = Find(new String[] { _.Name, _.OnceName }, new object[] { "中国","China" }); 4 var model3 = Find(_.Name == "中国" & _.OnceName == "China"); 5 //同理看一个FindAll的使用 6 var modelList1 = FindAll(_.IsAsia, true);//只针对IsAsia字段 7 //FindAll的最常见使用:5个参数的,第一个是条件表达式,第二个是排序字段(ComanyID),第三个是选择的字段,null代表选择所有 8 //startIndex参数,代表起始行,默认都是从0开始,最后一个表示放回的数据行数,0代表所有行,可以只取前10。 9 var modelList2 = FindAll(_.IsAsia == true & _.IsAuthority == true, _.ComanyID, null, 0, 0);
2) XCode的查询是实体基类Entity<TEntity>封装好的静态方法,里面包含很多东西,建议熟练使用后的朋友,好好看一看,对理解XCode,更好的使用都有很大的好处。
3) XCode中查询满足条件的记录数有专门的FindCount方法;其方法原型和FindAll类似。
4) XCode有着非常完善的缓存体系,实体类是直接可以进行缓存设置和查询的,方法是FindAllWithCache; Meta.Cache.Entities中也有缓存数据,可以直接查询。例如:
1 // 实体缓存 2 Meta.Cache.Entities.FindAll(_.EventId, eventid); 3 Meta.Cache.Entities.Find(_.Id, id); 4 //单对象缓存 5 return Meta.SingleCache[id]; 6 FindAllWithCache(_.EventName, "西甲");
5) XCode的实体操作接口IEntityOperate中也有相对于的查询方法,使用与单个实体的Find和FindAll的使用基本相同。例如下面一段代码(2年前使用XCode迁移数据写的,非常好理解,也非常好的完成了迁移工作)。里面在对表进行处理的时候,就使用了IEntityOperate来操作,非常方便。其使用和原理可以看源码,和博客的其他文章。
1 /// <summary> 2 ///