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 = ...
随机推荐
- c++官方文档-动态内存
#include<iostream> #include <new> using namespace std; int main() { /** * 动态内存 * url: ht ...
- Openstack虚机实例状态错误手工恢复vm_state:error
Openstack虚机实例状态错误手工恢复vm_state:error 1.找到状态为出错状态的VM.在数据库里面表现Status为ERROR而非ACTIVE. 2.找到出错状态VM的UUID. 3. ...
- Nop权限的使用
1.首先后台Admin--->siteMap中添加: <siteMapNode SystemName="我是系统名" nopResource="显示的中文名称 ...
- git 提交文件到gitee
1.新建文件夹 打开gitbash 初始化仓库 git.init 2.把要提交的文件copy到文件夹 3.git add. 4.git remote add master(分支) 远程仓库 5 ...
- 机器学习入门-贝叶斯中文新闻分类任务 1. .map(做标签数字替换) 2.CountVectorizer(词频向量映射) 3.TfidfVectorizer(TFDIF向量映射) 4.MultinomialNB()贝叶斯模型构建
1.map做一个标签的数字替换 2.vec = CountVectorizer(lowercase=False, max_features=4000) # 从sklean.extract_featu ...
- fb bin_debug下的swf不见了
fb清理了所选的项目,如果代码有错误,会自动删除bin_debug目录下的swf.这种情况,构建项目是无法自动生成swf的,只有将代码报错的地方修改正错了.选构建项目才会在bin_debug目录下生成 ...
- ABAP-Generate dynpro动态屏幕
1.获取屏幕参数值 FUN: RS_SCRP_GET_SCREEN_INFOS call function 'RS_SCRP_GET_SCREEN_INFOS' exporting dynnr = ' ...
- 使用JS获取当前地理位置方法汇总
使用JS获取当前地理位置方法汇总 投稿:hebedich 字体:[增加 减小] 类型:转载 时间:2014-12-18我要评论 这篇文章主要介绍了使用JS获取当前地理位置方法汇总,需要的朋友可以参考下 ...
- 第二次安装docker时,报Transaction check error的解决方法
如果在yum安装软件的时候,出现了Transaction check error:这种情况,说明rpm软件包出现了冲突,解决方法是: vi /etc/yum.repos.d/epel.repo 将en ...
- map模块使用方法
map指令使用ngx_http_map_module模块提供的.默认情况下,nginx有加载这个模块,除非人为的 --without-http_map_module.ngx_http_map_modu ...