我们正在构建员工时间跟踪计划,其中包含
等字段------------------------
Employee Number: 2001
Time in: 9am
Time out: 5pm
Overtime: 0
------------------------
客户希望选择ADD FOR ENTIRE WEEK CheckBox,这样他们就可以输入一次数据,并在整周内复选一次。
业务逻辑很疯狂,我只需要调用SAVECHANGES()5次。
问题:如何调用ctx.SAVECHANGES();多次? 我试过一个ForEach,我试过复制/粘贴ctx.SAVECHANGES();几次没有运气。
TIA
答案 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
}