这可能是一个奇怪的问题,但也许有人有一个想法......
我刚刚完成并将 NHibernate 1.2 升级到 3.3。升级进行得相当顺利,一切似乎都正常工作,除非我尝试将 IList 对象数据绑定到 DropDown 或 GridView。基本上发生的情况是,如果列表很大,.DataBind 调用需要很长时间,通常会导致应用程序超时。
我确信这个问题与绑定大型列表有关,但奇怪的是在 nhibernate 升级之前问题没有发生。例如,以下代码在升级期间未更改:
MarketSourceLogic sourceLogic = new MarketSourceLogic();
ddl = ((DropDownList)Accordion1.FindControl("dEditSourceAbbr"));
ddl.DataSource = sourceLogic.LoadAllMarketSources();
ddl.DataTextField = "Abbr";
ddl.DataValueField = "MarketSourceId";
ddl.DataBind();
ddl.Items.Insert(0, new ListItem(Constants.DROPDOWN_SELECT_TEXT, "0"));
在 NHib 1.2 中,代码需要几秒钟才能执行(尤其是 LoadAllMarketSources 调用),但不会出现问题。升级到 3.3 后,LoadAllMarketSources 调用花费了大约相同的时间,但是一旦调用 ddl.DataBind(),页面就会挂起并最终超时。
我知道这不是通过获取整个对象列表来加载下拉列表的最佳方式,我应该只获取我需要的字段。这不是重点,这只是一个例子。加载需要整个对象的gridview时也会出现问题。真正的问题是这些网格中的许多都加载了搜索结果,并且用户可以选择不搜索任何内容,因此页面将超时。
基本上我想知道是否有办法解决这个超时问题(也许我错过了 NHibernate 设置?)或者整个项目是否需要重构。
任何帮助和见解表示赞赏。
请注意,我确实尝试使用 .net 4 并获得了相同的结果。