优化EF以使用DTO填充表格?

时间:2014-03-04 01:59:48

标签: asp.net vb.net entity-framework dto

尝试在UI层上填充网格时,UI会向BI层询问结果列表,EF会返回每个结果的列表,然后将它们转换为DTO,其中会提取一些其他信息,这是转换为列表并返回到UI层。

表现非常缓慢。 EF正在创建一个新的上下文,并为每个单独的结果命中数据库。这是因为如果DAC类不再打开/活动,则每次初始化时都会创建一个新的dbcontext。该课程的最终结束将结束背景。我相信这就是杀人的表现。

有没有办法批处理这样的东西?在SQL中,我会在表上执行JOIN,我需要将结果数据加载到数据集中。在EF中,当我创建DTO i时,然后访问映射的对象关系并从其他对象访问数据。

当我需要访问某些未存储在该特定实体对象中的信息时,如何通过EF访问大量记录以返回到UI层网格? (这方面的一个例子是用户之间的关系 - >客户通过customer_userID - > userID PK。并且想要显示用户的名字,一旦我有了Customer对象,我需要再查询用户的User对象与该ID相关的名称。

任何人都有任何可以指出正确方法的文章吗?

1 个答案:

答案 0 :(得分:0)

将大量数据传递到UI层的函数导致了问题。通常是因为来自DB层的对象必须在它上面执行一些操作才能传递给UI层。本质上,一些列表生成函数使存储为每个单独的请求创建新的上下文。

即时分页是一个性能提升,以便请求起始偏移和记录计数。重要的是要注意,我们必须创建函数来简单地返回总计数,以便UI网格知道他们正在处理多少记录。

下一个修复是关于在将对象传递到UI层之前将BI规则应用于对象的函数。在这些情况下,我们打开一个新的上下文并将其传递给函数,因此它使用该上下文并仅在结果全部完成后将其关闭。