Asp.net EntityDataSource执行查询两次
我有一个将EntityDataSource中的数据绑定到分页ASP.NET ListView的页面。该查询实际上是一个相当复杂的查询,我不知道EDS是否真的是一个可行的方法,但它是继承的代码,我希望在不完全重新设计页面的情况下解决这个问题 问题是,当使用过滤器参数发回页面时,查询在不使用过滤器的情况下执行一次,然后再次使用过滤器执行一次。问题是,未过滤的结果集有1700多万条记录,并且会超时请求 所以我的问题是Asp.net EntityDataSource执行查询两次,asp.net,entitydatasource,Asp.net,Entitydatasource,我有一个将EntityDataSource中的数据绑定到分页ASP.NET ListView的页面。该查询实际上是一个相当复杂的查询,我不知道EDS是否真的是一个可行的方法,但它是继承的代码,我希望在不完全重新设计页面的情况下解决这个问题 问题是,当使用过滤器参数发回页面时,查询在不使用过滤器的情况下执行一次,然后再次使用过滤器执行一次。问题是,未过滤的结果集有1700多万条记录,并且会超时请求 所以我的问题是 为什么查询执行两次?我认为它可能与ListView上的DataPager有关,但当我
更新:2013/04/16 谢谢你@bUKaneer和@Lhibodeaux。我认为将请求信息添加到OP中会有所帮助 正如建议的那样,我注释掉了寻呼机控件和列表视图。删除后,对数据库的所有请求都停止。我只添加了ListView,查询又执行了两次 没有为EDS本身分配其他事件处理程序
<asp:EntityDataSource ID="edsSerialNumbers" runat="server" ContextTypeName="DBName.Entities" EnableFlattening="False"
EntitySetName="DIST_TABLE" Include="PRODUCT, DISTRIBUTION, DISTRIBUTION.COMPANY_SITE"
EnableUpdate ="true" EnableViewState="true"
OrderBy="it.DISTRIBUTION.DIST_NAME, it.PRODUCT.SERIAL_NUMBER"></asp:EntityDataSource>
在注释了除ListView的数据源分配给EDS的位置之外的所有内容后,我无法解决此问题
我将通过剥离EDS并用对存储过程的调用替换它来解决这个问题。非常令人沮丧,虽然这个问题存在于大约10-15个屏幕上,没有其他选择,我将不得不从头开始重新编写每个屏幕 EDS是否还有其他约束条件?如果您注释掉ListView,DataPager和EDS是否还有其他问题?如果没有看到更多的代码本身,就很难确定这里到底发生了什么。数据源上有哪些事件处理程序?数据寻呼机实际上是列表视图布局模板的一部分吗?如果是在外部,是否正确设置了PagedControlID值?过滤器参数是在EntityDataSource的参数集合的回发部分设置的,还是在代码隐藏中发生了什么,然后强制重新绑定?
<div class="dataTablePager">
<kqp:TablePager ID="pgrTop" runat="server" PagedControlID="lvSerialNumbers"/>
</div>
<asp:ListView ID="lvSerialNumbers" runat="server" DataKeyNames="ID" OnDataBound="lvSerialNumbers_DataBound" OnItemEditing ="lvSerialNumbers_ItemEditing" onitemdatabound="lvSerialNumbers_ItemDataBound" EnableViewState="true">
...
</asp:ListView>
<div class="dataTablePager">
<kqp:TablePager ID="pgrBot" runat="server" PagedControlID="lvSerialNumbers"/>
</div>
protected void Page_PreRender(object sender, EventArgs e)
{
if (!kqpFilters.IsFiltered && !IsPostBack)
{
lvSerialNumbers.DataSourceID = null;
}
else
{
lvSerialNumbers.DataSourceID = "edsSerialNumbers";
}
}