早上好,
我正在开发新的MVC4应用程序,其中包含一个巨大的搜索表单(超过50个参数)。 提交表单后,构建一个复杂的查询,我获得了一个viewModel的IList:
IList<ResultViewModel> results = session.CreateSQLQuery(ComplexQuery).SetResultTransformer(Transformers.AliasToBean<ResultViewModel>()).List<ResultViewModel>();
InterfaceVM.QueryResults = results;
InterfaceVM是我的输出视图用来显示网格结果和Leaflet地图的模型。 一切正常,但我可以获得高达100万条记录的结果。我需要使用PagedList.MVC实现分页,但不必在URL中传递搜索参数。我想避免一次又一次地重建查询和IList对象。
InterfaceVM.QueryResults =results.ToPagedList(pageNumber, 20);
此外,IList结果也将在我的输出视图中多次使用,以生成动态复杂的GIS输出。
我花了几个小时在网上阅读,找到了最佳策略,以便在提交表单后保持结果对象的持久性,以便能够轻松地操作它并避免为每个分页/映射请求重建它。 我在SQL服务器中读到了临时表,会话对象, MemoryCache 等...但我不知道什么更适合我的情况。
您对此的意见非常有帮助。我正在使用Fluent NHibernate,MVC4,SQL server 2008 R2。
提前感谢您的帮助
西尔