zoukankan      html  css  js  c++  java
  • NHibernate Step By Step(8)数据过滤器


    1.定义过滤器

    <filter-def name="LiveFilter">
         <filter-param name="LiveParam" type="boolean"/>
     </filter-def>
     
     <filter-def name="LiveFilter2">
         <filter-param name="LiveParam2" type="string"/>
     </filter-def>

    2.在映射文件中使用过滤器

    犹如在hql中下查询语句

    <class name="TestClass">
         <id name="Id" column="id">
             <generator class="assigned" />
         </id>
         <property name="Name" type="StringClob" length="100000" />
     
         <property name="Live" type="Boolean" />
         <filter name="LiveFilter" condition=":LiveParam = Live"/>
         <filter name="LiveFilter2"><![CDATA[Name = :LiveParam2]]></filter>
     </class>

    3.在配置文件中获取过滤器

    public void FilterDefinitionsLoadedCorrectly()
     {
         Configuration cfg = new Configuration();
         cfg.AddResource(mappingCfg, this.GetType().Assembly);
         Assert.AreEqual(cfg.FilterDefinitions.Count, 2);
     
         Assert.IsTrue(cfg.FilterDefinitions.ContainsKey("LiveFilter"));
     
         FilterDefinition f = cfg.FilterDefinitions["LiveFilter"];
     
         Assert.AreEqual(f.ParameterTypes.Count, 1);
     
         BooleanType t = f.ParameterTypes["LiveParam"] as BooleanType;
     
         Assert.IsNotNull(t); //ensure that the parameter is the correct type. 
     }

    4.启动过滤器

    ISession</TT对象中会用到的方法有: class=literal EnableFilter(string filterName), GetEnabledFilter(string filterName), 和 DisableFilter(string filterName). ISession 中默认是不启用过滤器的,必须通过ISession.EnableFilter()方法显式的启用。 该方法返回被启用的IFilter的实例

    通过启用EnableFilter方法启用过滤器

    public void FiltersLoaded()
     {
         Configuration cfg = new Configuration();
         cfg.AddResource(mappingCfg, this.GetType().Assembly);
     
         ISessionFactory factory = cfg.BuildSessionFactory();
     
         ISession session = factory.OpenSession();
     
         IFilter filter = session.EnableFilter("LiveFilter");
     
         Assert.AreEqual(filter.FilterDefinition.FilterName, "LiveFilter");
     
         filter.SetParameter("LiveParam", true);
     
         filter.Validate(); // make sure that everything is set up right. 
     
         IFilter filter2 = session.EnableFilter("LiveFilter2");
     
         filter2.SetParameter("LiveParam2", "somename");
     
         filter2.Validate();
     }

    IFilter接口

    image_2

  • 相关阅读:
    网络管理工具:Wireshark
    WAP header 信息的意义
    Visual Studio 2005 发布网站提示发布成功 但指定文件夹下没任何文件问题的解决
    Hello Win
    [转]手把手教你卸载oracle 10g
    如何识别 SQL Server 的版本
    生成insert sql脚本的存储过程
    JQuery触发事件
    PHP事务的使用方法
    PHP session和cookie
  • 原文地址:https://www.cnblogs.com/Clingingboy/p/1809631.html
Copyright © 2011-2022 走看看