EF调用SaveChanges()多次

时间:2011-03-18 02:14:27

标签: entity-framework

我们正在构建员工时间跟踪计划,其中包含

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

客户希望选择ADD FOR ENTIRE WEEK CheckBox,这样他们就可以输入一次数据,并在整周内复选一次。

业务逻辑很疯狂,我只需要调用SAVECHANGES()5次。

问题:如何调用ctx.SAVECHANGES();多次? 我试过一个ForEach,我试过复制/粘贴ctx.SAVECHANGES();几次没有运气。

TIA

1 个答案:

答案 0 :(得分:2)

那应该有用。如果您在最后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
}