用于解决Entity Framework性能问题的步骤和工具有哪些?

时间:2015-02-25 16:24:11

标签: entity-framework linq-to-entities

我正在查看使用LINQ to Entities插入数据时存在严重性能问题的现有系统。关系很复杂。

我熟悉常见的Entity Framework性能因素,例如调用SaveChanges的频率等等。但是,这有两个问题。首先,这不是问题(性能问题发生在SaveChanges甚至发生之前)。其次,它只是在猜测。它通常有效,但它不是一个过程,它是一个希望。

我想知道处理这些大问题的最佳方法,真正的方式,希望不起作用。如果这是使用SQL命令的ADO,则该工具将是SQL Server Performance Profiler,以查看发生了多少查询,它们是什么,它们的执行计划是什么等等,然后调整命令以缓解这些问题。在Entity Framework中,这些工具并不有效,因为你告诉它和它生成的命令之间没有1-1映射,在这种特殊情况下,它甚至不是SQL慢。 / p>

虽然我希望这里的答案是通用方法,但这里是针对我当前问题的相关代码:

    foreach( var thing in objectsToImport ) {
      var newEntityFrameworkManagedObject = new EntityFrameworkManagedObject { createdOn = DateTime.UtcNow };
      newEntityFrameworkManagedObject.OtherExistingEntity = getExistingEntity( thing.OtherEntityMatchingInfo );
      ... /*Many more lines associating new object to a bunch of existing items selected before loop.*/
      modelRepository.Insert( newEntityFrameworkManagedObject );
    }
    ...
    modelRepository.SaveChanges();

性能打击在modelRepository.Insert()上。我们正在导入数百行的CSV,每次调用Insert都需要一整分钟。请注意,它永远不会到达SaveChanges。即使是第一个要插入的项目也很慢。

0 个答案:

没有答案