Entity framework problème de performances, saveChanges est très lent

Récemment, je suis une simple EF travail. Très simple,
tout d'abord,

List<Book> books = entity.Books.WHERE(c=>c.processed==false)ToList();  
then  
    foreach(var book in books)  
    {  
      //DoSomelogic, update some properties,   
    book.ISBN = "ISBN " + randomNumber();  
    book.processed = true;  
    entity.saveChanges(book)  
    }  

J'ai mis entity.saveChanges dans le foreach parce que c'est une grande liste, autour de 100k dossiers, et si cet enregistrement est traitée sans problème, puis le drapeau de ce dossier, l'ensemble du livre.traitées = true, si le processus est interrompu par exception, alors la prochaine fois, je n'ai pas à traiter ces bons enregistrements.

Tout semble ok pour moi. Il est rapide lorsque vous traitez des centaines de dossiers. Puis, quand nous nous déplaçons à 100k enregistrements, d'une entité.saveChanges est très très lent. autour de 1 à 3 secondes par enregistrement. Ensuite, nous gardons le modèle d'entité, mais remplacer entity.saveChanges classique SqlHelper.ExecuteNonQuery("update_book", sqlparams). Et il est très rapide.

Quelqu'un pourrait-il me dire pourquoi entity framework processus qui est lent? Et si je veux encore de l'utilisation de l'entité.saveChanges, quelle est la meilleure manière d'améliorer les performances?

Merci

OriginalL'auteur user454232 | 2014-01-22