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


        在轻量级数据持久层Seaking.PL简介及建议征集轻量级数据持久层Seaking.PL简介--Query对象中,我已经对轻量级数据持久层Seaking.PL(以下简称PL)进行了介绍,并对PL中的两个重要对象Session和Query的使用进行了简单的说明,本文将介绍PL中的另一个重要对象:ConditionCollection(条件集合)。
        ConditionCollection是PL在获取数据时对获取条件的定义,也可以称为获取标准。ConditionCollection对象支持的条件有:等于(EqualTo)、不等于(NotEqualTo)、大于(GreaterThan)、大于或等于(GreaterThanOrEqualTo)、小于(LessThan)、小于或等于(LessThanOrEqualTo)、为空(IsNull)、不为空(NotIsNull)、以此开始(StartWith,针对字符串)、以此结束(EndWith,针对字符串)、包含(Include,针对字符串)、包括(In)、字段值比较(FieldCompare)、条件组(ConditionGroup)以及自定义条件(Custom),条件之间的逻辑关系(Raletion)可以是“并且(AND)”或“或(OR)”。在Session中,ConditionCollection作为获取方法的一个参数使用,而在Query中,ConditionCollection以属性Conditions的形式出现,但其使用方法是一致的。
        与ConditionCollection相对应,PL中定义了Condition对象,但Condition对象具有一些特殊性,不需要、同时也不允许客户程序直接访问Condition对象,因此本文将不对Condition对象进行说明。

    使用说明:
      
    A.ConditionCollection在Query对象中的使用

    首先实例化Query对象:

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


    (注:本文中的示例是从本文开始所提到的两篇文章中承接而来,阅读以上两篇文章将有助于理解本文中的代码)
    1.简单条件
    其实并没有对简单条件的明确定义,可以直接将上述的前8种条件列入简单条件的范围。对于简单条件的使用,文字说明基本是多余的,以下是两个示例:

    query.Conditions.AddEqualTo(Employee.fieldName_Id,10);
        //生成的SQL语句类似于SELECT * FROM employee WHERE Id=@Id1
    query.Conditions.AddIsNull(Employee.fieldName_Age);
        //生成的SQL语句类似于SELECT * FROM employee WHERE age IS NULL


    2.针对字符串的条件
    包括StartWith、EndWith、Include三种,示例代码:

    query.Conditions.AddStartsWith(Employee.fieldName_Name,"Mike");
    //生成的SQL语句类似于SELECT * FROM employee WHERE name LIKE  @name1
    //如果用非参数方式,则是SELECT * FROM employee WHERE name LIKE  'Mike%'


    3.包括(In)
    该条件将会生成一个逻辑关系为OR的条件组(下文将对条件组进行说明),示例代码:

    query.Conditions.AddIn(Employee.fieldName_Id,10,11,15);


    4.字段值比较(FieldCompare)
    两个字段的比较关系,关系枚举包括:Equal,Greater,GreaterOrEqual,Less,LessOrEqual,NotEqual。

    query.Conditions.AddFieldCompare("f1","f2",CompareKind.Equal);
    //生成的SQL语句类似于SELECT * FROM employee WHERE f1=f2


    5.条件组(ConditionGroup)
    在很多时候,单纯的使用AND或OR都是不够的,因此就有了使用条件组的必要。条件组事实上是一种特殊的条件集合,具有与条件集合相同的使用方法,条件组可以并列或嵌套使用。示例代码:

    query.Conditions.AddEqualTo(Employee.fieldName_Age,20);
    query.Conditions.AddConditionGroup(
    "group1");
    query.Conditions.ConditionGroups[
    "group1"].AddEqualTo(Employee.fieldName_Id,10);
    query.Conditions.ConditionGroups[
    "group1"].AddEqualTo(Employee.fieldName_Id,11);
    query.Conditions.ConditionGroups[
    "group1"].AddEqualTo(Employee.fieldName_Id,15);
    query.Conditions.ConditionGroups[
    "group1"].Raletion=ConditionRelation.OR;
    //生成的SQL语句类似于SELECT * FROM employee WHERE age=@age1 AND (ID=@ID1 OR ID=@ID2 OR ID=@ID3)


    该示例中的条件组事实上完成了上文In条件中示例代码的功能。
    6.自定义条件(Custom)
    对于以上条件无法满足的要求,可以用自定义条件实现,自定义条件的参数为WHERE子句中的条件字符串。示例代码:

    query.Conditions.AddCustom("f1=f2+1");
        //生成的SQL语句类似于SELECT * FROM employee WHERE f1=f2+1


    7.条件的逻辑关系
    条件集合中各条件的逻辑关系默认为AND,如果使用OR关系需要显式指定。

    query.Conditions.Raletion=ConditionRelation.OR;


    B.ConditionCollection在Session对象中的使用:
        在轻量级数据持久层Seaking.PL简介及建议征集中,已经对Session对象的使用进行了说明,Session在获取实体集合、获取实体主键属性值的集合、获取或填充数据集时,可以使用ConditionCollection指定获取条件。以获取实体集合为例,首先实例化ConditionCollection对象并根据需要添加条件,然后将实例化的ConditionCollection对象用作Session对象获取方法的参数,以下是示例代码:

    Session se=dp.NewSession();
    ConditionCollection conds
    =new ConditionCollection();
    conds.AddEqualTo(Employee.fieldName_Age,
    23);
    ArrayList list
    =se.LoadEntityList(typeof(Employee),conds);
        //获取age=23的Employee的实体集合


    结束语

        至此,轻量级数据持久层Seaking.PL简介系列文章已经结束,希望您提出宝贵的建议。近期将在我的博客中提供Seaking.PL的下载,欢迎感兴趣的朋友继续关注。

  • 相关阅读:
    未来行业
    百度网盘搜索方法
    JavaScript继承详解
    Win 7下破解Loadrunner 11(带中文版下载地址)
    NET下RabbitMQ实践[WCF发布篇]
    NET下RabbitMQ实践[示例篇]
    NET下RabbitMQ实践[配置篇]
    8个超炫的 Web 效果
    Windows下安装zip包解压版mysql
    键盘上相当于鼠标右键的快捷键和电脑快捷键大全
  • 原文地址:https://www.cnblogs.com/chinadhf/p/453103.html
Copyright © 2020-2023  润新知