В последнее время я занимаюсь простой работой EF. Очень просто, во-первых,
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)
}
Я помещаю entity.saveChanges
в foreach
, потому что это большой список, около 100 тыс. записей, и если эта запись обрабатывается без проблем, то отметьте эту запись, установите book.processed = true, если процесс прерван по исключению, то в следующий раз мне больше не нужно обрабатывать эти хорошие записи.
Все кажется мне хорошо. Это быстро, когда вы обрабатываете сотни записей. Затем, когда мы переходим на 100k записей, entity.saveChanges очень медленный. около 1-3 секунд на запись. Затем мы сохраняем модель сущности, но заменим entity.saveChanges
на классический SqlHelper.ExecuteNonQuery("update_book", sqlparams)
. И это очень быстро.
Может ли кто-нибудь сказать мне, почему процесс структуры сущностей медленный? И если я все еще хочу использовать entity.saveChanges, что лучший способ повысить производительность?
Спасибо