EF Вызов SaveChanges () несколько раз - PullRequest
2 голосов
/ 18 марта 2011

Мы создаем программу отслеживания времени сотрудников, в которой есть такие поля, как

------------------------
Employee Number: 2001
Time in: 9am
Time out: 5pm
Overtime: 0
------------------------

. Клиенту хотелось бы включить опцию «ДОБАВИТЬ ЗА ВСЮ НЕДЕЛЮ», чтобы он мог вводить данные один раз и устанавливать флажок для всех для всегонеделя.

Бизнес-логика сумасшедшая, и мне просто нужно вызвать SAVECHANGES () 5 раз.

Вопрос: Как мне вызвать ctx.SAVECHANGES ();многократно?Я пробовал ForEach и пробовал копировать / вставлять ctx.SAVECHANGES ();несколько раз без удачи.

TIA

1 Ответ

2 голосов
/ 18 марта 2011

Это должно работать. Второй вызов SaveChanges() не будет иметь никакого эффекта, только если вы не внесете никаких изменений в свой набор сущностей после последнего SaveChanges(). Но в целом вам не нужно будет вызывать SaveChanges() более одного раза, потому что один вызов совершит все изменения .

Поскольку вы не указали свои сущности, давайте представим, что у вас есть Employee сущность и TimeSheet сущность. Сущность TimeSheet связана с внешним ключом с сущностью Employee.

Тогда что-то вроде этого должно работать:

using(var context = new TimeTrackingEntities())
{
  var emp = context.Employees.Where(x=>x.Id == 2001).Single();
  DateTime day = DateTime.Now.Date;

  for(int i=0;i<7; i++)
  { 
     TimeSheet t = new TimeSheet() {Employee = emp, Day = day, OtherProperties="here"};
     day = day.AddDays(1);
     context.TimeSheets.Add(t);
  }
  context.SaveChanges(); // save all timesheet additions
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...