欢迎来到天天文库
浏览记录
ID:19954661
大小:52.00 KB
页数:5页
时间:2018-10-08
《spl讲解(4)--criteria操作篇》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、SmartPersistenceLayer2.0之Criteria操作篇概念以前一篇文章中,描述了实体Entity的操作,很明显,仅仅实体的操作是远远不够的。如:我们经常会根据查询条件从数据库中获取记录集并绑定到DataGrid上,会根据条件进行批量的Update和Delete,为此,在SPL引进了Criteria(标准)的概念,那么在SPL中设计了三种Criteria:RetrieveCriteria(获取标准)这个标准是根据查询条件,排序方式来获取满足条件的数据,可以以DataTable 、实体集的方式来返回。此标准会生成”Select*fromTBwh
2、ere…order…”语句执行UpdateCriteria(更新标准)这个标准是根据条件对一个表进行批量更新,最终会生成”UpdateTBset…where..”语句执行DeleteCriteria(删除标准)这个标准是根据条件对一个表进行批量删除,最终会生成”DeletefromTBwhere…”语句执行这些标准都是针对单一实体,也就是针对一个表的操作,当然对于Update和Delete来说,这些操作已经足够了,可对于Select来说,我们经常会多表查询,所以,关于这种联合查询将会在下一篇的”高级查询篇”中讲解。RetrieveCriteria获取标准这个
3、RetrieveCriteria是针对单一实体的查询,可以定义查询条件,排序方式并以不同的结果返回出来,下面我举一个例子:我们查询二年级的姓刘的学生号pdentEntityriarc=newRetrieveCriteria(); ,并以学号升序排RetrieveCriteriarc=newRetrieveCriteria(typeof(StudentEntity));//实例化Conditio
4、nc=rc.GetNewCondition();//实例化一个条件c.AddEqualTo(StudentEntity.__GRADE,2);//二年级条件c.AddMatchPrefix(StudentEntity.__Name,’刘’);//匹配’刘’字开头c.OrderBy(StudentEntity.__NO);//按学号排DataTabledt=rc.AsDataTable();//以DataTable方式返回步骤分析:1.实例化一个RetrieveCriteria时要指明是哪个实体类,使用“typeof(实体类名)”2.New一个Conditio
5、n(条件),可以使用此方法New出多个Condition,多个Condition之间是”OR”的关系3.给Condition指定条件,比如使用AddEqualTo(相等)、AddMatchPrefix(前匹配),关于Condition将会专门进行介绍4.使用OrderBy()方法指定排序方式,默认为升序,如果要以降序排序使用:OrderBy(StudentEntity.__NO,false)5.最后以AsDataTable的方式返回DataTable,这可以方便进行DataGrid的数据绑定多种返回方式例子中是采用DataTable进行返回,这也是平时最常用
6、的,SPL中还提供了其他的几种方式:EntityContainer实体集这是指返回结果以实体的集合方式体现,对于实体集的操作是非常简单的:EntityContainerec=rc.AsEntityContainer();for(inti=0;i7、or();if(oc.HasObject()){StudentEntitystudent=(StudentEntity)oc.NextObject();….//得到实体后可以进行自己的操作}在以游标返回后,进行操作前,一定要以HasObject()进行判断,以免抛出异常EntityObject单实体SPL在2.0中增加了以EntityObject单实体的返回方式,大家觉得奇怪了,RetrieveCriteria是返回多记录的,这个单实体是何意了。我们有时候会遇到一种情况,通过”侯选主键”来进行查询,所谓”侯选主键”就是非主键,但可以确定也是唯一的,比如学生表8、中的学号,但在数据表中学号不是主键,不能用Entit
7、or();if(oc.HasObject()){StudentEntitystudent=(StudentEntity)oc.NextObject();….//得到实体后可以进行自己的操作}在以游标返回后,进行操作前,一定要以HasObject()进行判断,以免抛出异常EntityObject单实体SPL在2.0中增加了以EntityObject单实体的返回方式,大家觉得奇怪了,RetrieveCriteria是返回多记录的,这个单实体是何意了。我们有时候会遇到一种情况,通过”侯选主键”来进行查询,所谓”侯选主键”就是非主键,但可以确定也是唯一的,比如学生表
8、中的学号,但在数据表中学号不是主键,不能用Entit
此文档下载收益归作者所有