diff --git a/core/includes/entity.inc b/core/includes/entity.inc
index d48aa4e..156eb01 100644
--- a/core/includes/entity.inc
+++ b/core/includes/entity.inc
@@ -138,57 +138,6 @@ function entity_revision_delete($entity_type, $revision_id) {
 }
 
 /**
- * Loads multiple entities from the database.
- *
- * This function should be used whenever you need to load more than one entity
- * from the database. The entities are loaded into memory and will not require
- * database access if loaded again during the same page request.
- *
- * The actual loading is done through a class that has to implement the
- * \Drupal\Core\Entity\EntityStorageInterface interface. By default,
- * \Drupal\Core\Entity\Sql\SqlContentEntityStorage is used for content entities
- * and Drupal\Core\Config\Entity\ConfigEntityStorage for config entities. Entity
- * types can specify that a different class should be used by setting the
- * "handlers['storage']" key in the entity plugin annotation. These classes
- * can either implement the \Drupal\Core\Entity\EntityStorageInterface
- * interface, or, most commonly, extend the
- * \Drupal\Core\Entity\Sql\SqlContentEntityStorage class. See
- * \Drupal\node\Entity\Node and \Drupal\node\NodeStorage for an example.
- *
- * @param string $entity_type
- *   The entity type to load, e.g. node or user.
- * @param array $ids
- *   (optional) An array of entity IDs. If omitted, all entities are loaded.
- * @param bool $reset
- *   Whether to reset the internal cache for the requested entity type.
- *
- * @return array
- *   An array of entity objects indexed by their IDs.
- *
- * @deprecated in Drupal 8.0.x, will be removed before Drupal 9.0.0. Use
- *   The method overriding Entity::loadMultiple() for the entity type, e.g.
- *   \Drupal\node\Entity\Node::loadMultiple() if the entity type is known. If
- *   the entity type is variable, use the entity manager service to load the
- *   entity from the entity storage:
- * @code
- * \Drupal::entityManager()->getStorage($entity_type)->loadMultiple($id)
- * @endcode
- *
- * @see \Drupal\Core\Entity\EntityInterface::loadMultiple()
- * @see \Drupal\Core\Entity\EntityManagerInterface::getStorage()
- * @see \Drupal\Core\Entity\EntityStorageInterface::loadMultiple()
- * @see \Drupal\Core\Entity\Sql\SqlContentEntityStorage
- * @see \Drupal\Core\Entity\Query\QueryInterface
- */
-function entity_load_multiple($entity_type, array $ids = NULL, $reset = FALSE) {
-  $controller = \Drupal::entityManager()->getStorage($entity_type);
-  if ($reset) {
-    $controller->resetCache($ids);
-  }
-  return $controller->loadMultiple($ids);
-}
-
-/**
  * Load entities by their property values.
  *
  * @param string $entity_type
diff --git a/core/includes/update.inc b/core/includes/update.inc
index 68401a9..62f56a3 100644
--- a/core/includes/update.inc
+++ b/core/includes/update.inc
@@ -713,7 +713,8 @@ function update_language_list($flags = LanguageInterface::STATE_CONFIGURABLE) {
     $default = \Drupal::languageManager()->getDefaultLanguage();
     if (\Drupal::languageManager()->isMultilingual() || \Drupal::moduleHandler()->moduleExists('language')) {
       // Use language module configuration if available. We can not use
-      // entity_load_multiple() because this breaks during updates.
+      // EntityStorageInterface::loadMultiple() because this breaks
+      // during updates.
       $language_entities = \Drupal::configFactory()->listAll('language.entity.');
 
       // Initialize default property so callers have an easy reference and can
diff --git a/core/modules/comment/comment.module b/core/modules/comment/comment.module
index 40b4e40..c6845b3 100644
--- a/core/modules/comment/comment.module
+++ b/core/modules/comment/comment.module
@@ -265,7 +265,7 @@ function comment_view(CommentInterface $comment, $view_mode = 'full', $langcode
  * Constructs render array from an array of loaded comments.
  *
  * @param \Drupal\comment\CommentInterface[] $comments
- *   An array of comments as returned by entity_load_multiple().
+ *   An array of comments as returned by CommentInterface::loadMultiple().
  * @param string $view_mode
  *   (optional) View mode; for instance, 'full', 'teaser', etc. Defaults to
  *   'full'.
diff --git a/core/modules/editor/editor.module b/core/modules/editor/editor.module
index 01d5c5e..a0348f0 100644
--- a/core/modules/editor/editor.module
+++ b/core/modules/editor/editor.module
@@ -249,7 +249,7 @@ function editor_load($format_id) {
   // than one editor will be needed on a page (such as having multiple text
   // formats for administrators). Loading a small number of editors all at once
   // is more efficient than loading multiple editors individually.
-  $editors = entity_load_multiple('editor');
+  $editors = Editor::loadMultiple();
   return isset($editors[$format_id]) ? $editors[$format_id] : NULL;
 }
 
diff --git a/core/modules/field/tests/src/Kernel/BulkDeleteTest.php b/core/modules/field/tests/src/Kernel/BulkDeleteTest.php
index 41fedfc..0886e18 100644
--- a/core/modules/field/tests/src/Kernel/BulkDeleteTest.php
+++ b/core/modules/field/tests/src/Kernel/BulkDeleteTest.php
@@ -137,7 +137,9 @@ protected function setUp() {
         $entity->save();
       }
     }
-    $this->entities = entity_load_multiple($this->entityTypeId);
+
+    $this->entities = \Drupal::entityTypeManager()
+      ->getStorage($this->entityTypeId)->loadMultiple();
     foreach ($this->entities as $entity) {
       // This test relies on the entities having stale field definitions
       // so that the deleted field can be accessed on them. Access the field
diff --git a/core/modules/file/file.module b/core/modules/file/file.module
index 0e5b057..7e139d0 100644
--- a/core/modules/file/file.module
+++ b/core/modules/file/file.module
@@ -1474,7 +1474,8 @@ function file_get_file_references(FileInterface $file, FieldDefinitionInterface
     $usage_list = \Drupal::service('file.usage')->listUsage($file);
     $file_usage_list = isset($usage_list['file']) ? $usage_list['file'] : array();
     foreach ($file_usage_list as $entity_type_id => $entity_ids) {
-      $entities = entity_load_multiple($entity_type_id, array_keys($entity_ids));
+      $entities = \Drupal::entityTypeManager()->getStorage($entity_type_id)
+        ->loadMultiple(array_keys($entity_ids));
       foreach ($entities as $entity) {
         $bundle = $entity->bundle();
         // We need to find file fields for this entity type and bundle.
diff --git a/core/modules/image/src/Entity/ImageStyle.php b/core/modules/image/src/Entity/ImageStyle.php
index 7314435..88bd16f 100644
--- a/core/modules/image/src/Entity/ImageStyle.php
+++ b/core/modules/image/src/Entity/ImageStyle.php
@@ -4,6 +4,8 @@
 
 use Drupal\Core\Cache\Cache;
 use Drupal\Core\Config\Entity\ConfigEntityBase;
+use Drupal\Core\Entity\Entity\EntityFormDisplay;
+use Drupal\Core\Entity\Entity\EntityViewDisplay;
 use Drupal\Core\Entity\EntityStorageInterface;
 use Drupal\Core\Entity\EntityWithPluginCollectionInterface;
 use Drupal\Core\Routing\RequestHelper;
@@ -137,7 +139,7 @@ protected static function replaceImageStyle(ImageStyleInterface $style) {
     if ($style->id() != $style->getOriginalId()) {
       // Loop through all entity displays looking for formatters / widgets using
       // the image style.
-      foreach (entity_load_multiple('entity_view_display') as $display) {
+      foreach (EntityViewDisplay::loadMultiple() as $display) {
         foreach ($display->getComponents() as $name => $options) {
           if (isset($options['type']) && $options['type'] == 'image' && $options['settings']['image_style'] == $style->getOriginalId()) {
             $options['settings']['image_style'] = $style->id();
@@ -146,7 +148,7 @@ protected static function replaceImageStyle(ImageStyleInterface $style) {
           }
         }
       }
-      foreach (entity_load_multiple('entity_form_display') as $display) {
+      foreach (EntityFormDisplay::loadMultiple() as $display) {
         foreach ($display->getComponents() as $name => $options) {
           if (isset($options['type']) && $options['type'] == 'image_image' && $options['settings']['preview_image_style'] == $style->getOriginalId()) {
             $options['settings']['preview_image_style'] = $style->id();
diff --git a/core/modules/language/src/Tests/LanguageConfigurationTest.php b/core/modules/language/src/Tests/LanguageConfigurationTest.php
index c83cc61..04c9953 100644
--- a/core/modules/language/src/Tests/LanguageConfigurationTest.php
+++ b/core/modules/language/src/Tests/LanguageConfigurationTest.php
@@ -204,8 +204,10 @@ protected function checkConfigurableLanguageWeight($state = 'by default') {
   protected function getHighestConfigurableLanguageWeight(){
     $max_weight = 0;
 
+    $storage = \Drupal::entityTypeManager()->getStorage('configurable_language');
+    $storage->resetCache();
     /* @var $languages \Drupal\Core\Language\LanguageInterface[] */
-    $languages = entity_load_multiple('configurable_language', NULL, TRUE);
+    $languages = $storage->loadMultiple();
     foreach ($languages as $language) {
       if (!$language->isLocked()) {
         $max_weight = max($max_weight, $language->getWeight());
diff --git a/core/modules/node/node.module b/core/modules/node/node.module
index fa9d3e9..353bc2e 100644
--- a/core/modules/node/node.module
+++ b/core/modules/node/node.module
@@ -232,23 +232,6 @@ function node_mark($nid, $timestamp) {
 }
 
 /**
- * Returns a list of all the available node types.
- *
- * This list can include types that are queued for addition or deletion.
- *
- * @return \Drupal\node\NodeTypeInterface[]
- *   An array of node type entities, keyed by ID.
- *
- * @deprecated in Drupal 8.x, will be removed before Drupal 9.0.
- *   Use \Drupal\node\Entity\NodeType::loadMultiple().
- *
- * @see \Drupal\node\Entity\NodeType::load()
- */
-function node_type_get_types() {
-  return NodeType::loadMultiple();
-}
-
-/**
  * Returns a list of available node type names.
  *
  * This list can include types that are queued for addition or deletion.
@@ -293,22 +276,6 @@ function node_type_get_description(NodeTypeInterface $node_type) {
 }
 
 /**
- * Menu argument loader: Loads a node type by string.
- *
- * @param $name
- *   The machine name of a node type to load.
- *
- * @return \Drupal\node\NodeTypeInterface
- *   A node type object or NULL if $name does not exist.
- *
- * @deprecated in Drupal 8.x, will be removed before Drupal 9.0.
- *   Use \Drupal\node\Entity\NodeType::load().
- */
-function node_type_load($name) {
-  return NodeType::load($name);
-}
-
-/**
  * Adds the default body field to a node type.
  *
  * @param \Drupal\node\NodeTypeInterface $type
@@ -415,7 +382,7 @@ function node_type_update_nodes($old_id, $new_id) {
  * @deprecated in Drupal 8.x, will be removed before Drupal 9.0.
  *   Use \Drupal\node\Entity\Node::loadMultiple().
  *
- * @see entity_load_multiple()
+ * @see \Drupal\Core\Entity\EntityStorageInterface::loadMultiple()
  * @see \Drupal\Core\Entity\Query\EntityQueryInterface
  */
 function node_load_multiple(array $nids = NULL, $reset = FALSE) {
diff --git a/core/modules/rest/src/Tests/CsrfTest.php b/core/modules/rest/src/Tests/CsrfTest.php
index 3835ab8..ea617fd 100644
--- a/core/modules/rest/src/Tests/CsrfTest.php
+++ b/core/modules/rest/src/Tests/CsrfTest.php
@@ -84,7 +84,9 @@ public function testCookieAuth() {
     $this->curlExec($curl_options);
     $this->assertResponse(403);
     // Ensure that the entity was not created.
-    $this->assertFalse(entity_load_multiple($this->testEntityType, NULL, TRUE), 'No entity has been created in the database.');
+    $storage = \Drupal::entityTypeManager()->getStorage($this->testEntityType);
+    $storage->resetCache();
+    $this->assertFalse($storage->loadMultiple(), 'No entity has been created in the database.');
 
     // Create an entity with the CSRF token.
     $token = $this->drupalGet('rest/session/token');
diff --git a/core/modules/search/src/Tests/SearchConfigSettingsFormTest.php b/core/modules/search/src/Tests/SearchConfigSettingsFormTest.php
index 7279ade..c458b16 100644
--- a/core/modules/search/src/Tests/SearchConfigSettingsFormTest.php
+++ b/core/modules/search/src/Tests/SearchConfigSettingsFormTest.php
@@ -3,6 +3,7 @@
 namespace Drupal\search\Tests;
 
 use Drupal\Core\Url;
+use Drupal\search\Entity\SearchPage;
 
 /**
  * Verify the search config settings form.
@@ -145,7 +146,7 @@ function testSearchModuleDisabling() {
     );
     $plugins = array_keys($plugin_info);
     /** @var $entities \Drupal\search\SearchPageInterface[] */
-    $entities = entity_load_multiple('search_page');
+    $entities = SearchPage::loadMultiple();
     // Disable all of the search pages.
     foreach ($entities as $entity) {
       $entity->disable()->save();
diff --git a/core/modules/taxonomy/src/Tests/LoadMultipleTest.php b/core/modules/taxonomy/src/Tests/LoadMultipleTest.php
index 1076f41..88d361f 100644
--- a/core/modules/taxonomy/src/Tests/LoadMultipleTest.php
+++ b/core/modules/taxonomy/src/Tests/LoadMultipleTest.php
@@ -18,7 +18,7 @@ protected function setUp() {
 
   /**
    * Create a vocabulary and some taxonomy terms, ensuring they're loaded
-   * correctly using entity_load_multiple().
+   * correctly using EntityStorageInterface::loadMultiple().
    */
   function testTaxonomyTermMultipleLoad() {
     // Create a vocabulary.
diff --git a/core/modules/taxonomy/src/Tests/VocabularyCrudTest.php b/core/modules/taxonomy/src/Tests/VocabularyCrudTest.php
index c8d33a3..cd15b4c 100644
--- a/core/modules/taxonomy/src/Tests/VocabularyCrudTest.php
+++ b/core/modules/taxonomy/src/Tests/VocabularyCrudTest.php
@@ -117,7 +117,7 @@ function testTaxonomyVocabularyLoadMultiple() {
     $names = taxonomy_vocabulary_get_names();
     $this->assertEqual($names[$vocabulary1->id()], $vocabulary1->id(), 'Vocabulary 1 name found.');
 
-    // Fetch the vocabularies with entity_load_multiple(), specifying IDs.
+    // Fetch the vocabularies with loadMultiple(), specifying IDs.
     // Ensure they are returned in the same order as the original array.
     $vocabularies = Vocabulary::loadMultiple(array($vocabulary3->id(), $vocabulary2->id(), $vocabulary1->id()));
     $loaded_order = array_keys($vocabularies);
diff --git a/core/modules/taxonomy/taxonomy.module b/core/modules/taxonomy/taxonomy.module
index be4f7fa..69780bd 100644
--- a/core/modules/taxonomy/taxonomy.module
+++ b/core/modules/taxonomy/taxonomy.module
@@ -344,7 +344,7 @@ function taxonomy_term_load_multiple_by_name($name, $vocabulary = NULL) {
  * from the database. Terms are loaded into memory and will not require
  * database access if loaded again during the same page request.
  *
- * @see entity_load_multiple()
+ * @see \Drupal\Core\Entity\EntityStorageInterface::loadMultiple()
  * @see \Drupal\Core\Entity\Query\EntityQueryInterface
  *
  * @deprecated in Drupal 8.x, will be removed before Drupal 9.0.
@@ -368,7 +368,7 @@ function taxonomy_term_load_multiple(array $tids = NULL) {
  * vocabulary from the database. Terms are loaded into memory and will not
  * require database access if loaded again during the same page request.
  *
- * @see entity_load_multiple()
+ * @see \Drupal\Core\Entity\EntityStorageInterface::loadMultiple()
  *
  * @deprecated in Drupal 8.x, will be removed before Drupal 9.0.
  *   Use \Drupal\taxonomy\Entity\Vocabulary::loadMultiple().
diff --git a/core/modules/tour/tour.module b/core/modules/tour/tour.module
index ed53f25..050eaa7 100644
--- a/core/modules/tour/tour.module
+++ b/core/modules/tour/tour.module
@@ -6,6 +6,7 @@
  */
 
 use Drupal\Core\Routing\RouteMatchInterface;
+use Drupal\tour\Entity\Tour;
 
 /**
  * Implements hook_help().
@@ -85,7 +86,7 @@ function tour_page_bottom(array &$page_bottom) {
   $results = \Drupal::entityQuery('tour')
     ->condition('routes.*.route_name', $route_name)
     ->execute();
-  if (!empty($results) && $tours = entity_load_multiple('tour', array_keys($results))) {
+  if (!empty($results) && $tours = Tour::loadMultiple(array_keys($results))) {
     foreach ($tours as $id => $tour) {
       // Match on params.
       if (!$tour->hasMatchingRoute($route_name, $route_match->getRawParameters()->all())) {
diff --git a/core/modules/user/user.module b/core/modules/user/user.module
index 1366dce..4af945f 100644
--- a/core/modules/user/user.module
+++ b/core/modules/user/user.module
@@ -179,7 +179,7 @@ function user_entity_extra_field_info() {
  * @return array
  *   An array of user objects, indexed by uid.
  *
- * @see entity_load_multiple()
+ * @see \Drupal\Core\Entity\EntityStorageInterface::loadMultiple()
  * @see \Drupal\user\Entity\User::load()
  * @see user_load_by_mail()
  * @see user_load_by_name()
@@ -1025,7 +1025,7 @@ function user_user_role_delete(RoleInterface $role) {
     return;
   }
 
-  $actions = entity_load_multiple('action', array(
+  $actions = Action::loadMultiple(array(
     'user_add_role_action.' . $role->id(),
     'user_remove_role_action.' . $role->id(),
   ));
diff --git a/core/modules/views/src/Plugin/views/query/Sql.php b/core/modules/views/src/Plugin/views/query/Sql.php
index 54bb981..8dce1c0 100644
--- a/core/modules/views/src/Plugin/views/query/Sql.php
+++ b/core/modules/views/src/Plugin/views/query/Sql.php
@@ -1518,7 +1518,8 @@ public function loadEntities(&$results) {
         }
       }
       else {
-        $entities = entity_load_multiple($entity_type, $flat_ids);
+        $entities = \Drupal::entityTypeManager()->getStorage($entity_type)
+          ->loadMultiple($flat_ids);
       }
 
       foreach ($ids as $index => $relationships) {
diff --git a/core/scripts/generate-d7-content.sh b/core/scripts/generate-d7-content.sh
index 8b591f4..dfda02e 100644
--- a/core/scripts/generate-d7-content.sh
+++ b/core/scripts/generate-d7-content.sh
@@ -94,7 +94,7 @@
     ),
   );
   field_create_field($field);
-  $node_types = $i > 11 ? array('page') : array_keys(node_type_get_types());
+  $node_types = $i > 11 ? array('page') : array_keys(NodeType::loadMultiple());
   foreach ($node_types as $bundle) {
     $instance = array(
       'label' => $vocabulary->name,
diff --git a/core/tests/Drupal/KernelTests/Core/Entity/EntityApiTest.php b/core/tests/Drupal/KernelTests/Core/Entity/EntityApiTest.php
index 5f2693e..cd32fff 100644
--- a/core/tests/Drupal/KernelTests/Core/Entity/EntityApiTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Entity/EntityApiTest.php
@@ -82,10 +82,12 @@ protected function assertCRUD($entity_type, UserInterface $user1) {
     $this->assertEqual($entity->name->value, 'test3', format_string('%entity_type: Entity updated.', array('%entity_type' => $entity_type)));
 
     // Try deleting multiple test entities by deleting all.
-    $ids = array_keys(entity_load_multiple($entity_type));
+    $ids = array_keys(\Drupal::entityTypeManager()->getStorage($entity_type)
+      ->loadMultiple());
     entity_delete_multiple($entity_type, $ids);
 
-    $all = entity_load_multiple($entity_type);
+    $all = \Drupal::entityTypeManager()->getStorage($entity_type)
+      ->loadMultiple();
     $this->assertTrue(empty($all), format_string('%entity_type: Deleted all entities.', array('%entity_type' => $entity_type)));
 
     // Verify that all data got deleted.
@@ -110,7 +112,8 @@ protected function assertCRUD($entity_type, UserInterface $user1) {
     $controller->delete($entities);
 
     // Verify that entities got deleted.
-    $all = entity_load_multiple($entity_type);
+    $all = \Drupal::entityTypeManager()->getStorage($entity_type)
+      ->loadMultiple();
     $this->assertTrue(empty($all), format_string('%entity_type: Deleted all entities.', array('%entity_type' => $entity_type)));
 
     // Verify that all data got deleted from the tables.
diff --git a/core/tests/Drupal/KernelTests/Core/Entity/EntityQueryTest.php b/core/tests/Drupal/KernelTests/Core/Entity/EntityQueryTest.php
index 2db824f..6b78f2a 100644
--- a/core/tests/Drupal/KernelTests/Core/Entity/EntityQueryTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Entity/EntityQueryTest.php
@@ -247,7 +247,7 @@ function testEntityQuery() {
       ->condition("$greetings.value", 'merhaba')
       ->sort('id')
       ->execute();
-    $entities = entity_load_multiple('entity_test_mulrev', $ids);
+    $entities = EntityTestMulRev::loadMultiple($ids);
     $first_entity = reset($entities);
     $old_name = $first_entity->name->value;
     foreach ($entities as $entity) {
diff --git a/core/tests/Drupal/KernelTests/Core/Entity/EntityTranslationTest.php b/core/tests/Drupal/KernelTests/Core/Entity/EntityTranslationTest.php
index 923a13f..6d478d4 100644
--- a/core/tests/Drupal/KernelTests/Core/Entity/EntityTranslationTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Entity/EntityTranslationTest.php
@@ -251,9 +251,11 @@ protected function doTestMultilingualProperties($entity_type) {
       ))
       ->save();
 
-    $entities = entity_load_multiple($entity_type);
+    $entities = \Drupal::entityTypeManager()->getStorage($entity_type)
+      ->loadMultiple();
     $this->assertEqual(count($entities), 3, format_string('%entity_type: Three entities were created.', array('%entity_type' => $entity_type)));
-    $entities = entity_load_multiple($entity_type, array($translated_id));
+    $entities = \Drupal::entityTypeManager()->getStorage($entity_type)
+      ->loadMultiple(array($translated_id));
     $this->assertEqual(count($entities), 1, format_string('%entity_type: One entity correctly loaded by id.', array('%entity_type' => $entity_type)));
     $entities = entity_load_multiple_by_properties($entity_type, array('name' => $name));
     $this->assertEqual(count($entities), 2, format_string('%entity_type: Two entities correctly loaded by name.', array('%entity_type' => $entity_type)));
