обновить несколько записей одновременно - EF + репозиторий - PullRequest
0 голосов
/ 16 октября 2018

Мой код -

public void SaveTagOrder(List<KeyValuePair<int, int>> result) {
        foreach(var item in result){
      var entity = _vpsdbContext.Tags.FirstOrDefault(e => e.TagId == item.Key);
            if (entity != null) { entity.SortOrder = item.Value; }
        }
        _vpsdbContext.SaveChanges();
    }

Я просто хочу обновить несколько записей одновременно.Насколько я знаю, я пишу этот код, но он добавляется один за другим.Пожалуйста, скажите мне любой другой способ обновить несколько записей одновременно.

1 Ответ

0 голосов
/ 16 октября 2018

Технически проблем нет.Обновление EntityFramework работает следующим образом ..

Вы можете внести некоторые изменения, чтобы ускорить процесс

Опция 1

установить AutoDetectChangesEnabled до Неверно Пожалуйста, проверьте этот ответ

 db.Tags
       .Where(x=>result.Contains(x.tagId))
       .ToList()
       .ForEach(a=>a.SortOrder = value);

 db.SaveChanges();

Вариант 2

Вы можете попробовать EntityFramework плагины для массовых операций это здесь

Вот небольшая выдержка из раздела производительности, приведенного далее в документе.

Batch iteration with 25000 entities
Insert entities: 880ms
Update all entities with a: 189ms
Bulk update all with a random read: 153ms
delete all entities with a: 17ms
delete all entities: 282ms

Standard iteration with 25000 entities
Insert entities: 8599ms
Update all entities with a: 360ms
Update all with a random read: 5779ms
delete all entities with a: 254ms
delete all entities: 5634ms
...