以下代码由两个.SaveChanges()
调用分隔,因为我必须按固定顺序运行一些代码。
首先,我必须删除现有的东西,然后添加新创建的数据。
我现在如何确保.SaveChanges
在一次交易中运行?我应该在TransactionScope
SaveChanges
吗?
我的两个SaveChanges()
都是正确的吗?
var periodsToDelete = _context.Periods.Where(p => p.SchoolyearId == response.Schoolyear.Id &&
p.LessonDate >= response.DeletionStartDate &&
p.LessonDate <= response.DeletionEndDate).AsNoTracking();
var schoolclassCodesToDelete = _context.SchoolclassCodes.Where(s => s.SchoolyearId == schoolyear.Id).AsNoTracking();
var timetablesToDelete = _context.TimeTables.Where(t => t.SchoolyearId == schoolyear.Id).AsNoTracking();
_context.Periods.RemoveRange(periodsToDelete);
_context.SchoolclassCodes.RemoveRange(schoolclassCodesToDelete);
_context.TimeTables.RemoveRange(timetablesToDelete);
_context.SaveChanges();
_context.Entry(schoolyear).State = EntityState.Modified;
_context.SchoolclassCodes.AddRange(existingAndNewSchoolclassCodes);
_context.TimeTables.AddRange(timetablesA.Concat(timetablesAB));
_context.Periods.AddRange(periods);
_context.SaveChanges();