2012-02-13 52 views
1

在我的项目中,我有一页RDLC图。他们曾经在一些存储过程和xsd上运行。我会传递一串我的结果的ID应该包括限制我的数据集。我不得不改变这个,因为我开始在对象数据集参数中运行1000个字符的限制。带有业务对象的对象数据源很慢?

我更新了我的图表,使其在业务对象列表上运行,而且看起来页面的加载速度比以前慢得多。我的意思是页面加载速度明显较慢,现在需要一分钟左右。

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

回答

1

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

当我绑定我的列表< BusinessObject>到ReportViewer页面花了1分9秒加载。

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

0

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

+0

我的业务逻辑使用实体框架和用户过滤器仅将请求的项目从数据库中提取出来,然后将其转换为业务对象并通过ObjectDataSource调用的方法返回到列表中。 – William 2012-02-13 22:54:21

0

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

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

看来,报告的作者做了一些穿越对象图的东西。

这似乎只是在VS 2010的情况。VS 2008似乎并没有遭受同样的问题。

+0

有趣。这很好。谢谢。 – William 2012-09-23 21:03:58