一、延迟加载

//用户发布的主题,一对多;Table:外键表;ColumnKey:外键;Lazy:延迟加载;Cascade:级联操作(级联删除)
[HasMany(typeof(ThemeInfo), Table = "ThemeInfo", ColumnKey = "UserID", Lazy = true, Cascade = ManyRelationCascadeEnum.Delete)]
public virtual IList<ThemeInfo> ThemeInfos { get; set; }

Lazy=true,当需要用到的时候才会自动读取,用法:

//延迟加载,必须使用 using (new SessionScope())
using (new SessionScope())
{
StringBuilder htmlStr1 = new StringBuilder();
IList<Models.UserInfo> list1 = Models.UserInfo.FindAll();
foreach (Models.UserInfo item in list1)
{
htmlStr1.Append("编号:" + item.ID + " 名称:" + item.Name + "<br />");
htmlStr1.Append("&nbsp;&nbsp;&nbsp;&nbsp;我的主题:<br />");
foreach (Models.ThemeInfo item2 in item.ThemeInfos)
{
htmlStr1.Append("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;编号:" + item2.ID + " 名称:" + item2.Subject + "<br />");
}
}
Literal1.Text = htmlStr1.ToString(); int PageCount = ;
StringBuilder htmlStr2 = new StringBuilder();
IList<Models.UserInfo> list2 = Models.UserInfo.FindInPage(, , ref PageCount);
foreach (Models.UserInfo item in list2)
{
htmlStr2.Append("编号:" + item.ID + " 名称:" + item.Name + "<br />");
htmlStr2.Append("&nbsp;&nbsp;&nbsp;&nbsp;我的主题:<br />");
foreach (Models.ThemeInfo item2 in item.ThemeInfos)
{
htmlStr2.Append("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;编号:" + item2.ID + " 名称:" + item2.Subject + "<br />");
}
}
Literal2.Text = htmlStr2.ToString();
Literal3.Text = PageCount + ""; }

分页查询:

//分页获取数据
public static IList<UserInfo> FindInPage(int PageIndex, int PageSize, ref int PageCount)
{
int BeginIndex = ((PageIndex - 1) * PageSize);
string hql = " from UserInfo c ";
SimpleQuery<UserInfo> query = new SimpleQuery<UserInfo>(hql);
query.SetQueryRange(BeginIndex, PageSize);//设置从哪一条开始 ScalarQuery squery = new ScalarQuery(typeof(UserInfo), "select Count(*) from UserInfo");
int recordCount = Convert.ToInt32(ExecuteQuery(squery));//获得总条数
PageCount = (recordCount / PageSize) + (recordCount % PageSize > 0 ? 1 : 0); return query.Execute();
}

  

二、使用Where子句

[HasMany(typeof(ThemeInfo), Table = "ThemeInfo", ColumnKey = "UserID", Lazy = true, Cascade = ManyRelationCascadeEnum.Delete,Where="UserID=1")]
public virtual IList<ThemeInfo> AdultThemeInfos { get; set; }

  查询所有UserID等于1的用户 发布的主题信息。Where中的条件语句须是表【Table="ThemeInfo"】中的字段名,不是属性名称。

Castle ActiveRecord学习(四)延迟加载、分页查询、where条件的更多相关文章

  1. Castle ActiveRecord学习实践

    Castle是针对.NET平台的一个开源项目,从数据访问框架ORM到IOC容器,再到WEB层的MVC框架.AOP,基本包括了整个开发过程中的所有东西,为我们快速的构建企业级的应用程序提供了很好的服务. ...

  2. 项目一:第四天 1、快递员的条件分页查询-noSession,条件查询 2、快递员删除(逻辑删除) 3、基于Apache POI实现批量导入区域数据 a)Jquery OCUpload上传文件插件使用 b)Apache POI读取excel文件数据

    1. 快递员的条件分页查询-noSession,条件查询 2. 快递员删除(逻辑删除) 3. 基于Apache POI实现批量导入区域数据 a) Jquery OCUpload上传文件插件使用 b) ...

  3. Castle ActiveRecord学习(五)使用HQL语句查询

    来源:http://www.cnblogs.com/Terrylee/archive/2006/04/12/372823.html 一.HQL简单介绍HQL全名是Hibernate Query Lan ...

  4. Castle ActiveRecord学习(三)数据映射及特性描述

    Model中的Demo: using Castle.ActiveRecord; using Castle.ActiveRecord.Queries; using System; using Syste ...

  5. Castle ActiveRecord学习(六)数据验证

    参考.来源:http://www.cnblogs.com/Terrylee/archive/2006/04/13/374173.html https://github.com/castleprojec ...

  6. Castle ActiveRecord学习(二)配置、引用、程序启动

    来源:http://www.cnblogs.com/zxj159/p/4082987.html 配置数据库驱动: Model层引用:Castle.ActiveRecord.dll.NHibernate ...

  7. Castle ActiveRecord学习(一)简介

    简介 来源:http://www.cnblogs.com/zxj159/p/4082987.html 一.Active Record(活动记录)模式 Active Record是业务逻辑层中(< ...

  8. Node.js、express、mongodb 实现分页查询、条件搜索

    前言 在上一篇Node.js.express.mongodb 入门(基于easyui datagrid增删改查) 的基础上实现了分页查询.带条件搜索. 实现效果 1.列表第一页. 2.列表第二页 3. ...

  9. dhtmlxGrid分页查询,条件查询实例

    使用jquery的ajax get将页面条件请求到后台,取得数据库数据,分页查询,返回前台grid中. 引入所需文件: <script>window.dhx_globalImgPath = ...

随机推荐

  1. Spark运行模式概述

    Spark编程模型的回顾 spark编程模型几大要素 RDD的五大特征 Application program的组成 运行流程概述 具体流程(以standalone模式为例) 任务调度 DAGSche ...

  2. Samba 简介

    SMB 代表的是服务器消息块 (Server Message Block),它是用于在 Windows 上共享文件的协议的原始名称. CIFS 代表公共 Internet 文件系统 (Common I ...

  3. IO流程及优化

    http://blog.csdn.net/xypzwl/article/details/51416883 一.存储设备的存储原理 机械硬盘: 机械硬盘使用磁性物质作为存储介质,用N.S极性来代表0或1 ...

  4. 开发组件:Supervisor

    Supervisor安装与配置(Linux/Unix进程管理工具) https://blog.csdn.net/xyang81/article/details/51555473 https://www ...

  5. WARN hdfs.DFSClient: Caught exception java.lang.InterruptedException

    Hadoop 2.7.4 The reason is this: originally, DataStreamer::closeResponder always prints a warning ab ...

  6. java在注解中绑定方法参数的解决方案

    我们有这样子的需求,需要记录用户操作某个方法的信息并记录到日志里面,例如,用户在保存和更新任务的时候,我们需要记录下用户的ip,具体是保存还是更新,调用的是哪个方法,保存和更新的任务名称以及操作是否成 ...

  7. 显式锁(三)读写锁ReadWriteLock

    前言:   上一篇文章,已经很详细地介绍了 显式锁Lock 以及 其常用的实现方式- - ReetrantLock(重入锁),本文将介绍另一种显式锁 - - 读写锁ReadWriteLock.    ...

  8. 扯皮的cplex-感觉时间不对

    import ilog.cplex.CpxMult; import ilog.cplex.CpxNumExpr; import ilog.cplex.IloCplex; import ilog.con ...

  9. python正则表达式re库(自用)

    经典例子: 1.由26个字母组成的字符串 ^[A-Za-z]+$ 2. 中国境内邮政编码 [1-9]\d{5} 3.IP地址 0-99:[1-9]?\d 100-199:1\d{2} 200-249: ...

  10. wireshark的过滤

    过滤源ip.目的ip.在wireshark的过滤规则框Filter中输入过滤条件.如查找目的地址为192.168.101.8的包,ip.dst==192.168.101.8:查找源地址为ip.src= ...