Castle ActiveRecord学习(四)延迟加载、分页查询、where条件
一、延迟加载
//用户发布的主题,一对多;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(" 我的主题:<br />");
foreach (Models.ThemeInfo item2 in item.ThemeInfos)
{
htmlStr1.Append(" 编号:" + 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(" 我的主题:<br />");
foreach (Models.ThemeInfo item2 in item.ThemeInfos)
{
htmlStr2.Append(" 编号:" + 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条件的更多相关文章
- Castle ActiveRecord学习实践
Castle是针对.NET平台的一个开源项目,从数据访问框架ORM到IOC容器,再到WEB层的MVC框架.AOP,基本包括了整个开发过程中的所有东西,为我们快速的构建企业级的应用程序提供了很好的服务. ...
- 项目一:第四天 1、快递员的条件分页查询-noSession,条件查询 2、快递员删除(逻辑删除) 3、基于Apache POI实现批量导入区域数据 a)Jquery OCUpload上传文件插件使用 b)Apache POI读取excel文件数据
1. 快递员的条件分页查询-noSession,条件查询 2. 快递员删除(逻辑删除) 3. 基于Apache POI实现批量导入区域数据 a) Jquery OCUpload上传文件插件使用 b) ...
- Castle ActiveRecord学习(五)使用HQL语句查询
来源:http://www.cnblogs.com/Terrylee/archive/2006/04/12/372823.html 一.HQL简单介绍HQL全名是Hibernate Query Lan ...
- Castle ActiveRecord学习(三)数据映射及特性描述
Model中的Demo: using Castle.ActiveRecord; using Castle.ActiveRecord.Queries; using System; using Syste ...
- Castle ActiveRecord学习(六)数据验证
参考.来源:http://www.cnblogs.com/Terrylee/archive/2006/04/13/374173.html https://github.com/castleprojec ...
- Castle ActiveRecord学习(二)配置、引用、程序启动
来源:http://www.cnblogs.com/zxj159/p/4082987.html 配置数据库驱动: Model层引用:Castle.ActiveRecord.dll.NHibernate ...
- Castle ActiveRecord学习(一)简介
简介 来源:http://www.cnblogs.com/zxj159/p/4082987.html 一.Active Record(活动记录)模式 Active Record是业务逻辑层中(< ...
- Node.js、express、mongodb 实现分页查询、条件搜索
前言 在上一篇Node.js.express.mongodb 入门(基于easyui datagrid增删改查) 的基础上实现了分页查询.带条件搜索. 实现效果 1.列表第一页. 2.列表第二页 3. ...
- dhtmlxGrid分页查询,条件查询实例
使用jquery的ajax get将页面条件请求到后台,取得数据库数据,分页查询,返回前台grid中. 引入所需文件: <script>window.dhx_globalImgPath = ...
随机推荐
- win10下多版本apache(2.2,2.4)+php(5.3.5,5.5.37,5.6.25,7.0.8)注意点
1.Loaded Configuration File 问题: apache2.2 httpd PHPIniDir D:\php5.3.5\php.ini AddType application/x- ...
- 安装MegaCli,查看linux服务器raid信息
1.下载安装包 下载地址:https://raw.githubusercontent.com/crazy-zhangcong/tools/master/MegaCli8.07.10.tar.gz 2. ...
- python动态函数hasattr,getattr,setattr,delattr
hasattr(object,name) hasattr用来判断对象中是否有name属性或者name方法,如果有,染回true,否则返回false class attr(): def fun( ...
- 2018-2019-2 《网络对抗技术》Exp1 PC平台逆向破解 Week3 20165233
Exp1 PC平台逆向破解 实验内容 一.基础知识点 NOP, JNE, JE, JMP, CMP汇编指令的机器码 NOP指令即"空指令",执行到NOP指令时,CPU什么也不做,机 ...
- js中在一个函数中引用另一个函数中的函数,可以这么做
在另一个函数中,将需要使用的函数绑定在window下 // UEditor $(function () { window.ue = UE.getEditor('editor', { // ue即可成为 ...
- CUDA C Programming Guide 在线教程学习笔记 Part 5
附录 A,CUDA计算设备 附录 B,C语言扩展 ▶ 函数的标识符 ● __device__,__global__ 和 __host__ ● 宏 __CUDA_ARCH__ 可用于区分代码的运行位置. ...
- 34. CentOS-6.3安装配置Apache2.2.6
安装说明 安装环境:CentOS-6.3安装方式:源码编译安装 软件:httpd-2.2.6.tar.gz | pcre-8.32.tar.gz | apr-1.4.6.tar.gz | apr-u ...
- HTML5 Canvas ( 创建图形对象 ) createImageData
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- linux 安装svn服务器
一.下载 http://subversion.tigris.org/downloads/subversion-1.6.1.tar.gz http://subversion.tigris.org/dow ...
- as3 object与dictionary区别
AS3中的Dictionary类(flash.utils.Dictionary)是一个新的AS类.Dictionary类和Object唯一的区别在于:Dictionary对象可以使用非字符串作为键值对 ...