Aktualizacja kolekcji poprzez Entity Framework

0

Witam,

Czy da się jakoś w łatwy sposób dokonać aktualizacji wybranych elementów(kolekcji) poprzez EF? Tzn.

using (var repo = new EFDbContext())
{
    var test = repo.PlanTasksDb.Where(x => taskWithComments.Any(e => e.Task.id == x.id));

    foreach (var planTaskDb in test)
    {
        planTaskDb.EmailSend = true;
    }

                            
    repo.SaveChanges();
}

Czy jednak tak się nie da i trzeba każdą encję osobno wybrać z bazy i zaktualizować ?

0

W Twoim kodzie przecież z punktu widzenia serwera baz danych mamy jedną transakcję zawierającą (zależnie od ilości elementów w kolekcji test) ileś tam operacji UPDATE. Dopiero metoda SaveChanges() wykonuje transakcję. Jakbyś miał w pętli SaveChanges(), wówczas każdy UPDATE szedłby osobno.

1

To nie ma nic wspólnego z aktualizacją. To błędy w wyrażeniu LINQ. Popraw:

repo.PlanTasksDb.Where(x => taskWithComments.Any(e => e.Task.id == x.id));

na:

repo.PlanTasksDb.Where(x => x.taskWithComments.Select(e => e.Task.id).Contains(x.id));
0

Nie wiem czemu ale działa tylko takie coś:
var ids = taskWithComments.Select(x => x.Task.id);
var tasksToUpdate = repo.PlanTasksDb.Where(x => ids.Any(e => e == x.id));

1 użytkowników online, w tym zalogowanych: 0, gości: 1