首页 > Castle ActiveRecord学习(四)延迟加载、分页查询、where条件

Castle ActiveRecord学习(四)延迟加载、分页查询、where条件

一、延迟加载

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

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

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

 

分页查询:

//分页获取数据public static IList FindInPage(int PageIndex, int PageSize, ref int PageCount){int BeginIndex = ((PageIndex - 1) * PageSize);string hql = " from UserInfo c ";SimpleQuery query = new SimpleQuery(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 AdultThemeInfos { get; set; }

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

 

转载于:https://www.cnblogs.com/xsj1989/p/5310432.html

更多相关:

  •  点击查看效果 代码直接复制就可以用了 

  • 实现选项卡的选择:   效果图如下: 代码如下: 选项卡的选择Demo