Как добавлять в базу данных данные асинхронно

170
20 января 2019, 05:40

В моем приложении я хочу добавить данные в базу, это мой парсер, парсится все асинхронно, и в процессе парсинга UI не блокируется, а вот когда все спарсенные результаты начинают добавляться в базу, тогда происходит блокировка UI.

Пробую сделать асинхронный метод не получается, работаю с базой через EF.

Вот код метода, который добавляет все результаты в базу:

public Task AddRezultinbase()
{
    using (var context = new ResumeData())
    {
        foreach (var item in Big)
        {
            int i = 1;
            context.Mypars.Add(new Resume() { ResumeId = i, VacansName = item.VacansName, Name = item.Name, Expiriens = item.Expiriens, Salary = item.Salary, Foto = item.Foto });
            i++;
        }
        context.SaveChanges();
    }
}

Это свойство:

DbSet   public  DbSet<Resume> Mypars { get; set; }

Как сделать этот метод асинхронным?

Answer 1

Практически все методы EF имеют аналогичный асинхронный метод.

Асинхронные выборки:

return await this.ApplicationDbContext.Gamedays
                 .Include(x => x.Place)
                 .AsNoTracking()
                 .SingleOrDefaultAsync(x => x.Id == id);

Асинхронное обновление и сохранение:

this.ApplicationDbContext.Gamedays.Update(entity);
await this.ApplicationDbContext.SaveChangesAsync();

И так далее.

Соответственно, вам достаточно заменить одну строку:

context.SaveChanges();

на

await context.SaveChangesAsync();

Ну и не забыть добавить в метод указание на async.

READ ALSO
Помогите, с заданием

Помогите, с заданием

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

182
Как поднять приоритет слоя Ignore Raycast?

Как поднять приоритет слоя Ignore Raycast?

На Terrain стоит rigitbody объект с Mesh RendererПри перемещении его с помощью курсора мыши мы временно меняем его слой на Ignore Raycast и он частично погружается...

173
Отменить remote валидацию для определённого action

Отменить remote валидацию для определённого action

Можно ли как нибудь отменить действие валидации Remote на определённой странице представления?

169