- 1、本文档共19页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
ObjectQueryLanguage使用指南
基本功能
ObjectQueryLanguage提供了一种基于对象的查询语言。
支持OPath语法风格的路径表达式。
支持属于多个Entity的多列。
OO风格指定列:如OrderLine.Order.Customer.ContactName。
支持聚合函数,SQL99标准函数(基于Entity语义)。
支持列间表达式计算。
支持GroupOrderAs(列别名)
支持EntityView定义,可以在Query定义中使用已有的EntityView!
支持名空间的使用,支持中文
引入from子句,可支持leftjoin,rightjoin,fulljoin,crossjoin
在select,from,where子句中支持子查询
用OQL别名指代OPath,使OQL的表达更加简洁
UDF(UserDefinedFunction)的直接支持。
union,unionall.
临时表的支持。
OQL风格指南
New!对C风格a?b:c条件表达式和CaseWhen表达式的支持(第5页)
New!对标准日期时间函数的支持(第6页)
New!对cast/convert类型转换函数的支持(第7页)
New!支持UpdateDelete语句!!!!!!!(第7页)
2.优势与比较
直接基于实体模型,避免手工执行从实体到表的映射。
3.安装
将$Dev\PubRef\Business\UFSoft.UBF.View.Query.dll添加到项目引用中,
$Dev\PubRef\Business\UFSoft.UBF.Business.Adapter.dll,
$Dev\PubRef\System下
UFSoft.UBF.Util.Expression.dll,
UFSoft.UBF.Util.dll,
UFSoft.UBF.Util.SQLBuilder.dll,
UFSoft.UBF.Util.Log.dll,
Tools.dll
需要拷贝到运行目录。
environment.xml中有一新的配置节:/environment/view/creator,如$Dev/PubRef/Business下的environment.xml所示。
view
creatortype=UFSoft.UBF.View.Query.Adapter.TranslatorCreator,UFSoft.UBF.Business.Adapter/
/view
语言指南
UBF对象查询语言有两种风格:简单条件过滤与复杂报表查询。
简单条件过滤在概念上是针对一个强类型的对象集合指定一个过滤条件,对集合中的每个对象应用此过滤条件进行筛选,结果是所有满足条件的对象所构成的子集合。这种场景主要在UBFBE编程中,由某种BE.Finder.Find(xxx)返回对象集合。
复杂报表查询基本上是SQLselect语句在Object-Oriented中的对应物,它用对象的类名,属性名等概念表达SQL中原来用表名,列名来表达的查询概念,但返回的是一个表格状的数据。你可以使用orderby/groupby等SQL类似的语言结构。在BE中有EntityDataQueryAPI,可以获取DataTable或DataReader来对结果进行操纵。
由于简单条件过滤仅在原单一类型上过滤/排序,因此可以返回该类型的对象集合,但复杂报表查询可以任意组合不同的对象类型的属性作为返回列,这种组合不对应任意已有的类,因此返回结果是弱类型的表格形式。
考虑到与C#风格一致,OQL是大小写敏感的,因此所有的关键字都必须小写。
简单形式兼容ObjectSpaceOPath(历史上最早由OPath启发而来),表示查询条件,使用时应当指定对应的主实体,即条件是在该主实体上过滤。
OQL表示条件:(仅用在BE.Finder.FindAPI编程中,总是针对实体类型而言。)
简单条件:
Customer.ID=ALFKI,
Customer是当前实体的一个属性,类型为Customer,ID是Customer的一个属性,在元源数据中有定义,如Customer映射到Customers表,ID映射为CustomerID列。
多EntityJoin条件:
Customer.Order.ShipName=,
QueryEngine将Order视为Customer类的一个属性,仍然没有即报错。最后一列总是属性,此处ShipName是Order实体的属性。
OPath风格指
文档评论(0)