一、延迟加载
//用户发布的主题,一对多;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 = 0; StringBuilder htmlStr2 = new StringBuilder(); IList<Models.UserInfo> list2 = Models.UserInfo.FindInPage(2, 3, 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 + ""; }
分页查询:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | //分页获取数据 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子句
1 2 | [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"】中的字段名,不是属性名称。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】