public void ClearExpenseLines(ExpenseReport er) { List <ExpenseLine> ELs = new List <ExpenseLine>(); // Remove EL from list (iterate backward to be safe) for (int i = er.ExpenseLines.Count - 1; i >= 0; i--) { ELs.Add(er.ExpenseLines[i]); er.RemoveLine(er.ExpenseLines[i]); } // Destroy all ELs for (int i = ELs.Count - 1; i >= 0; i--) { ExpenseLine toRemove = ELs[i]; //ExpenseLine toRemove = Db.ExpenseLines.SingleOrDefault(el => el.Id == ELs[i].Id); if (toRemove != null) { Db.ExpenseLines.Remove(toRemove); } } Db.SaveChanges(); }