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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值