• 轻量级数据持久层Seaking.PL简介--Query对象


        在轻量级数据持久层Seaking.PL简介及建议征集中,已经对Seaking.PL(以下简称PL)进行了简单的介绍,并对PL中的主要对象Session的使用进行了说明。本文将介绍PL中的另一个重要对象Query。(本文的部分用语及示例从轻量级数据持久层Seaking.PL简介及建议征集中承接而来)
        Query是数据查询对象,不具备Session对象的操作功能,但查询功能更加强大,包括对View(视图)的查询及对Join(关联)、Condition(条件)、Order(排序)、Alias(别名)等的支持。

    使用说明:
    1.声明及实例化。
    同Session一样,Query对象不能用new进行实例化,而必须由DataProvider(数据提供者)对象产生。

    Query query=dp.NewQuery(Employee.tableName);

    参数可以是任何数据表名或视图名。示例中的Employee.tableName是Employee实体类所对应数据表的表名,等同于字符串“employee”。如果需要使用表的别名,可以如下声明:

    Query query=dp.NewQuery(Employee.tableName,"em");

    也可以在声明Query的实例后再指定Query的TableName属性值和TableAlias属性值:

    Query query=dp.NewQuery();
    query.TableName
    =Employee.tableName;
    query.TableAlias
    ="em";

    不指定表的别名时,表的别名即是表名(下同)。
    2.添加查询结果中的字段列表(Fields)。
     
    query.Fields.Add(Employee.fieldName_Id);
    query.Fields.Add(Employee.fieldName_Name);

    参数是数据表或视图的字段名。如果需要指定字段的别名,可以如下声明:
     
    query.Fields.Add(Employee.fieldName_Id,"emId");
    query.Fields.Add(Employee.fieldName_Name,
    "emName");

    当使用联接查询时,表(或视图)、字段的别名是非常有用的。
    如果不添加任何字段列表,Query将按照默认自动添加所有字段。
    3.添加查询条件(Conditions)。
    Query对象有一个非常重要的属性Conditions,用来指定查询条件。Conditions的使用相对复杂,将在下一篇中单独说明。
    4.添加排列字段及排序方式(Orders)。
     
    query.Orders.Add(Employee.fieldName_Id);

    参数为排序字段的名称。Query默认的排序方式为升序(ASC),如果使用降序方式,必须显式指定:
     
    query.Orders.Add(Employee.fieldName_Id,OrderKind.DESC);

    可以添加多个排序字段,按照添加顺序分别为第一、第二……排序字段。
    5.联接查询。
     
    query.Joins.Add("sale");

    参数为要联接的数据表名或视图名。如果需要指定别名,可如下声明:
     
    query.Joins.Add("sale","mySale");

    为便于区分,我们将Query的TableName所指的表(或视图)称为主表,将此处联接所指的表(或视图)称为联接表。
    Query默认的联接方式是INNER JOIN,其他联接方式必须显示指定,如:
     
    query.Joins["mySale"].JoinKind=JoinKind.LeftOuterJoin;

    每个联接必须至少指定一个联接条件(OnCondition),否则将引发异常。
     
    query.Joins["mySale"].AddOnCondition("id","employeeId");

    第一个参数为主表的字段名,第二个参数为联接表的字段名。Query默认的联接方式为等值联接,其他联接方式必须显式指定,如:
     
    query.Joins["mySale"].AddOnCondition("id","employeeId",CompareKind.Greater);

    可以象对主表一样对联接表进行添加字段列表,添加查询条件等操作,如:
     
    query.Joins["mySale"].Fields.Add("saleDate");
    query.Joins[
    "mySale"].Fields.Add("saleSum");

    也可以根据联接表的字段对查询结果进行排序,与字段列表、查询条件不同的是,联接表的排序字段应该在Query中指定,如:
     
    query.Orders.Add("mySale","saleDate",OrderKind.DESC);

    可以看出,添加排序字段的操作同主表是一致的,但需要指定表名。事实上,添加主表的排序字段也可以使用这种格式,但主表的表名是可以省略的。
    每一个Query可以添加一个或多个联接。
    6.获取或填充数据集。
    根据我们的需要做完以上的一项或多项工作后,便可以获取或填充数据集,得到我们需要的结果。

    DataSet dataSet=query.GetDataSet();

    DataSet dataSet=new DataSet();
    query.FillDataSet(dataSet);

    数据集中的表(DataTable)名为Query中所指定的TableAlias。

    其他:
    1.虽然Query对象的功能已相对强大,但仍无法满足一些复杂查询的要求,建议将复杂查询建立视图后使用。
    2.为了便于使用者调试,Query对象提供了GetSelectString()方法,可以查看Query所生成的查询字符串。

    结束
        轻量级数据持久层Seaking.PL简介及建议征集发布后,许多朋友给予了关注并发表了自己的看法,在此表示感谢。同时欢迎大家继续关注Seaking.PL并提出宝贵建议!

  • 相关阅读:
    TTFB
    区分数组与对象
    单点登录使用163邮箱
    从其它系统登录到SharePoint 2010系统的单点登录
    js 弹出对话框3种方式
    PowerShell编辑
    修改SharePoint页面上的控件数量的限制
    在SharePoint 2010页面中嵌入SWF文件
    修改SharePoint列表项显示“新”图标的天数
    JSP页面显示乱码
  • 原文地址:https://www.cnblogs.com/chinadhf/p/444901.html
Copyright © 2020-2023  润新知