在Entity Framework中的事务中运行多个SaveChanges

时间:2013-12-28 15:51:01

标签: entity-framework entity-framework-6

以下代码由两个.SaveChanges()调用分隔,因为我必须按固定顺序运行一些代码。

首先,我必须删除现有的东西,然后添加新创建的数据。

  1. 我现在如何确保.SaveChanges在一次交易中运行?我应该在TransactionScope

  2. 周围包裹SaveChanges吗?
  3. 我的两个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();  
    

0 个答案:

没有答案