实体框架清单以提高性能

时间:2012-02-05 07:16:38

标签: entity-framework entity-framework-4.1

我正在使用Entity Framework 4开发一个项目。拥有大约50个实体,大多数所有表都与用户表有关系。搜索用户有更多时间返回结果。在用户表中,我已经删除了导航属性,即使它花费更多时间。 主要是在网络上,为任何特定的场景/问题提供了性能指南。是否有可用于提高实体框架工作性能的通用检查表?

动态搜索用户,如下所示

 var searchPredication = (from user in entities.Users
 where ((searchKeyword == "") || (searchField != "" && searchKeyword != "" &&
 searchField == "BarCode" && user.BarCode == searchKeyword)||
(searchField == "LastName" && user.LastName == searchKeyword)  ||
(searchField == "FirstName" && user.FirstName == searchKeyword))) && !user.IsDeleted 
select user).FirstOrDefault();

此外,我还需要提供有关EF中常见绩效管理的更多信息。

1 个答案:

答案 0 :(得分:3)

没有任何'核对清单',但这里有一些提示,以确保您的网站运作良好:

  • 始终在dev数据库中保留大量数据,如果注入数百万个虚拟行,则会在开发过程中夸大性能问题。
  • 使用性能测试,如果我们有一个高容量网站,我们每页至少设置一次测试,以便检查加载时间。这允许您选择外围页面。
  • 避免使用非常复杂的LINQ语句,它们通常(但并非总是)是错误的,大多数情况下你可以简单地实现。
  • 只要您拥有正确的数据,就立即枚举您的设置。这可以避免在显示代码中意外地使查询复杂化。 (即使用ToList或ToArray)
  • 在复杂查询上使用EFProfiler或SQLProfiler来验证SQL看起来是否合理。

希望这会有所帮助,整体表现更像是一门艺术而非一门科学。它有点滑动。