当前位置: 首页 > 编程语言 > C#

nhibernate2.0高效数据分页DataList控件和ObjectDataSource分享

时间:2023-04-10 18:16:36 C#

nhibernate2.0高效数据分页DataList控件和ObjectDataSource我如何使用nHibernate2ObjectDataSource一次调用完成Scott的工作http://weblogs.asp.net/scottgu/archive/2006/01/07/434787.aspx下面是我的数据访问方法publicIListGetListOfUser(introws,intpageIndex){IListuserList=null;使用(ITransactiontx=_session.BeginTransaction()){try{userList=_session.CreateQuery("从用户u中选择u,其中u.DateSubmitted不为空").SetFirstResult(rows*(pageIndex-1)+1).SetMaxResults(行).List();tx.Commit();}catch(NHibernate.HibernateExceptionex){tx.Rollback();AppUtil.LogHelper.WriteLog(LogLevel.ERROR,ex.ToString());扔;}}返回用户列表;实际上,如果你正在使用ICriteria查询,那么你可以使用这个辅助方法来计算结果页数和总记录到服务器:CriteriaTransformer.Clone(标准);//分页.recordsCriteria.设置FirstResult(pageIndex*pageSize);recordsCriteria.SetMaxResults(pageSize);//计数标准.ICriteriacountCriteria=CriteriaTransformer.TransformToRowCount(criteria);//执行多条件以获得两个结果并计入一次数据库访问。IMultiCriteria=mSession.CreateMultiCriteria();multiCriteria.Add(recordsCriteria);multiCriteria.Add(countCriteria);IListmultiResult=multiCriteria.List();IListuntypedRecords=multiResult[0]asIList;IList记录=newList();if(untypedRecords!=null){foreach(TobjinuntypedRecords){records.Add(obj);}}else{records=newList();}totalCount=Convert.ToInt64(((IList)multiResult[1])[0]);退货记录;}它复制原始条件两次:一次返回页记录,一次返回总记录数。它还使用IMultiCriteria在一次往返中执行两个数据库调用。搞定了,不过两次调用我在ref中添加了itemCount:以上就是C#学习教程的全部内容:nhibernate2.0高效数据分页DataList控件和ObjectDataSource,如果对大家有用还需要进一步了解C#学习教程,希望大家多多关注——itemCount=(Int64)_session.CreateQuery("selectcount(UserId)fromUser").UniqueResult();如需转载请注明出处: