具有业务对象的对象数据源速度慢?

时间:2012-02-13 22:35:33

标签: asp.net objectdatasource business-objects

在我的项目中,我有一个包含一些RDLC图的页面。他们曾经在一些存储过程和xsd上运行。我会传递一个我的结果ID的字符串,以限制我的数据集。我不得不改变这一点,因为我开始在对象数据集参数上遇到1000个字符的限制。

我更新了我的图表以在业务对象列表上运行,而且似乎页面加载速度明显慢于以前。通过明显更慢,我的意思是页面加载大约需要一分钟。

有人知道在拉动业务对象时是否知道对象数据源运行缓慢吗?如果没有,是否有一个很好的方法来追踪导致问题的确切原因?我在我的方法中添加了断点,它实际上在获取业务对象之前和之后检索它们;这种方法似乎不是减速的原因。

3 个答案:

答案 0 :(得分:1)

我做了一些测试,看起来dang的东西在绑定到业务对象而不是数据表时运行速度明显变慢。

当我绑定我的List< BusinessObject的>对于ReportViewer,该页面需要1分9秒才能加载。

当我使用我的业务逻辑时,使用相同的函数返回List并从列表中构建一个只包含报告所需列的DataTable,然后将DataTable绑定到页面在20秒内加载的报告。

答案 1 :(得分:0)

您使用的是select *吗?如果是这样,如果您没有使用整个表,请尝试单独选择每个字段。这会有所帮助。

答案 2 :(得分:0)

@William:我遇到了同样的问题。我注意到,当我展平业务对象时,报告的运行速度明显加快。您甚至不必将业务对象映射到新的扁平化对象,只需将嵌套对象设置为null即可。即:

  foreach(var employee in employees)
    {
        employee.Department = null;
        employee.Job = null;
    }

报告编写者似乎做了一些遍历对象图的事情。

仅在VS 2010中就是这种情况.VS 2008似乎没有遇到同样的问题。