diff --git a/core/lib/Drupal/Core/Config/Entity/ConfigStorageController.php b/core/lib/Drupal/Core/Config/Entity/ConfigStorageController.php
index 6d0a3f4..b230440 100644
--- a/core/lib/Drupal/Core/Config/Entity/ConfigStorageController.php
+++ b/core/lib/Drupal/Core/Config/Entity/ConfigStorageController.php
@@ -246,11 +246,11 @@ public function delete(array $entities) {
     }
 
     $this->preDelete($entities);
-    foreach ($entities as $id => $entity) {
+    foreach ($entities as $entity) {
       $this->invokeHook('predelete', $entity);
     }
 
-    foreach ($entities as $id => $entity) {
+    foreach ($entities as $entity) {
       $config = config($this->entityInfo['config_prefix'] . '.' . $entity->id());
       $config->delete();
 
@@ -261,7 +261,7 @@ public function delete(array $entities) {
     }
 
     $this->postDelete($entities);
-    foreach ($entities as $id => $entity) {
+    foreach ($entities as $entity) {
       $this->invokeHook('delete', $entity);
     }
   }
diff --git a/core/lib/Drupal/Core/Entity/DatabaseStorageController.php b/core/lib/Drupal/Core/Entity/DatabaseStorageController.php
index bf515de..bf1b9a1 100644
--- a/core/lib/Drupal/Core/Entity/DatabaseStorageController.php
+++ b/core/lib/Drupal/Core/Entity/DatabaseStorageController.php
@@ -452,10 +452,14 @@ public function delete(array $entities) {
 
     try {
       $this->preDelete($entities);
-      foreach ($entities as $id => $entity) {
+      foreach ($entities as $entity) {
         $this->invokeHook('predelete', $entity);
       }
-      $ids = array_keys($entities);
+
+      // We shouldn't assume that the array keys are the entity ids.
+      $ids = array_map(function ($entity) {
+        return $entity->id();
+      }, $entities);
 
       db_delete($this->entityInfo['base_table'])
         ->condition($this->idKey, $ids, 'IN')
@@ -471,7 +475,7 @@ public function delete(array $entities) {
       $this->resetCache($ids);
 
       $this->postDelete($entities);
-      foreach ($entities as $id => $entity) {
+      foreach ($entities as $entity) {
         $this->invokeHook('delete', $entity);
       }
       // Ignore slave server temporarily.
