diff --git a/core/modules/content_translation/content_translation.module b/core/modules/content_translation/content_translation.module
index 083fc4c..9782369 100644
--- a/core/modules/content_translation/content_translation.module
+++ b/core/modules/content_translation/content_translation.module
@@ -412,7 +412,8 @@ function content_translation_entity_presave(EntityInterface $entity) {
     // as original language, since source values are the only ones available to
     // compare against.
     if (!isset($entity->original)) {
-      $entity->original = entity_load_unchanged($entity->entityType(), $entity->id());
+      $entity->original = \Drupal::entityTypeManager()
+        ->getStorage($entity->entityType())->loadUnchanged($entity->id());
     }
     $langcode = $entity->language()->getId();
     /** @var \Drupal\content_translation\ContentTranslationManagerInterface $manager */
diff --git a/core/modules/field/src/Tests/EntityReference/EntityReferenceIntegrationTest.php b/core/modules/field/src/Tests/EntityReference/EntityReferenceIntegrationTest.php
index bae3041..9235313 100644
--- a/core/modules/field/src/Tests/EntityReference/EntityReferenceIntegrationTest.php
+++ b/core/modules/field/src/Tests/EntityReference/EntityReferenceIntegrationTest.php
@@ -82,7 +82,9 @@ public function testSupportedEntityTypesAndWidgets() {
 
       // Try to post the form again with no modification and check if the field
       // values remain the same.
-      $entity = current(entity_load_multiple_by_properties($this->entityType, array('name' => $entity_name)));
+      /** @var \Drupal\Core\Entity\EntityStorageInterface $storage */
+      $storage = $this->container->get('entity_type.manager')->getStorage($this->entityType);
+      $entity = current($storage->loadByProperties(['name' => $entity_name]));
       $this->drupalGet($this->entityType . '/manage/' . $entity->id() . '/edit');
       $this->assertFieldByName($this->fieldName . '[0][target_id]', $referenced_entities[0]->label() . ' (' . $referenced_entities[0]->id() . ')');
       $this->assertFieldByName($this->fieldName . '[1][target_id]', $referenced_entities[1]->label() . ' (' . $referenced_entities[1]->id() . ')');
@@ -108,7 +110,7 @@ public function testSupportedEntityTypesAndWidgets() {
 
       // Try to post the form again with no modification and check if the field
       // values remain the same.
-      $entity = current(entity_load_multiple_by_properties($this->entityType, array('name' => $entity_name)));
+      $entity = current($storage->loadByProperties(['name' => $entity_name]));
       $this->drupalGet($this->entityType . '/manage/' . $entity->id() . '/edit');
       $this->assertFieldByName($this->fieldName . '[target_id]', $target_id . ' (' . $referenced_entities[1]->id() . ')');
 
@@ -119,7 +121,7 @@ public function testSupportedEntityTypesAndWidgets() {
       // Since we don't know the form structure for these widgets, just test
       // that editing and saving an already created entity works.
       $exclude = array('entity_reference_autocomplete', 'entity_reference_autocomplete_tags');
-      $entity = current(entity_load_multiple_by_properties($this->entityType, array('name' => $entity_name)));
+      $entity = current($storage->loadByProperties(['name' => $entity_name]));
       $supported_widgets = \Drupal::service('plugin.manager.field.widget')->getOptions('entity_reference');
       $supported_widget_types = array_diff(array_keys($supported_widgets), $exclude);
 
@@ -173,7 +175,8 @@ public function testSupportedEntityTypesAndWidgets() {
    *   An array of referenced entities.
    */
   protected function assertFieldValues($entity_name, $referenced_entities) {
-    $entity = current(entity_load_multiple_by_properties($this->entityType, array('name' => $entity_name)));
+    $entity = current($this->container->get('entity_type.manager')->getStorage(
+      $this->entityType)->loadByProperties(['name' => $entity_name]));
 
     $this->assertTrue($entity, format_string('%entity_type: Entity found in the database.', array('%entity_type' => $this->entityType)));
 
diff --git a/core/modules/field/tests/src/Kernel/BulkDeleteTest.php b/core/modules/field/tests/src/Kernel/BulkDeleteTest.php
index 41fedfc..78af244 100644
--- a/core/modules/field/tests/src/Kernel/BulkDeleteTest.php
+++ b/core/modules/field/tests/src/Kernel/BulkDeleteTest.php
@@ -137,7 +137,8 @@ protected function setUp() {
         $entity->save();
       }
     }
-    $this->entities = entity_load_multiple($this->entityTypeId);
+    $this->entities = $this->container->get('entity_type.manager')
+      ->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 bbf3bff..d9a945e 100644
--- a/core/modules/file/file.module
+++ b/core/modules/file/file.module
@@ -1476,7 +1476,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/rest/src/Tests/CsrfTest.php b/core/modules/rest/src/Tests/CsrfTest.php
index f98abad..d34fc24 100644
--- a/core/modules/rest/src/Tests/CsrfTest.php
+++ b/core/modules/rest/src/Tests/CsrfTest.php
@@ -84,7 +84,10 @@ 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 = $this->container->get('entity_type.manager')
+      ->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/tests/Drupal/KernelTests/Core/Entity/EntityApiTest.php b/core/tests/Drupal/KernelTests/Core/Entity/EntityApiTest.php
index 583940e..31cdaec 100644
--- a/core/tests/Drupal/KernelTests/Core/Entity/EntityApiTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Entity/EntityApiTest.php
@@ -60,32 +60,36 @@ protected function assertCRUD($entity_type, UserInterface $user1) {
       ->create(array('name' => 'test', 'user_id' => NULL));
     $entity->save();
 
-    $entities = array_values(entity_load_multiple_by_properties($entity_type, array('name' => 'test')));
+    /** @var \Drupal\Core\Entity\EntityStorageInterface $storage */
+    $storage = $this->container->get('entity_type.manager')
+      ->getStorage($entity_type);
+
+    $entities = array_values($storage->loadByProperties(['name' => 'test']));
     $this->assertEqual($entities[0]->name->value, 'test', format_string('%entity_type: Created and loaded entity', array('%entity_type' => $entity_type)));
     $this->assertEqual($entities[1]->name->value, 'test', format_string('%entity_type: Created and loaded entity', array('%entity_type' => $entity_type)));
 
     // Test loading a single entity.
-    $loaded_entity = entity_load($entity_type, $entity->id());
+    $loaded_entity = $storage->load($entity->id());
     $this->assertEqual($loaded_entity->id(), $entity->id(), format_string('%entity_type: Loaded a single entity by id.', array('%entity_type' => $entity_type)));
 
     // Test deleting an entity.
-    $entities = array_values(entity_load_multiple_by_properties($entity_type, array('name' => 'test2')));
+    $entities = array_values($storage->loadByProperties(['name' => 'test2']));
     $entities[0]->delete();
-    $entities = array_values(entity_load_multiple_by_properties($entity_type, array('name' => 'test2')));
+    $entities = array_values($storage->loadByProperties(['name' => 'test2']));
     $this->assertEqual($entities, array(), format_string('%entity_type: Entity deleted.', array('%entity_type' => $entity_type)));
 
     // Test updating an entity.
-    $entities = array_values(entity_load_multiple_by_properties($entity_type, array('name' => 'test')));
+    $entities = array_values($storage->loadByProperties(['name' => 'test']));
     $entities[0]->name->value = 'test3';
     $entities[0]->save();
-    $entity = entity_load($entity_type, $entities[0]->id());
+    $entity = $storage->load($entities[0]->id());
     $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($storage->loadMultiple());
     entity_delete_multiple($entity_type, $ids);
 
-    $all = entity_load_multiple($entity_type);
+    $all = $storage->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 +114,7 @@ protected function assertCRUD($entity_type, UserInterface $user1) {
     $controller->delete($entities);
 
     // Verify that entities got deleted.
-    $all = entity_load_multiple($entity_type);
+    $all = $storage->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/EntityTranslationTest.php b/core/tests/Drupal/KernelTests/Core/Entity/EntityTranslationTest.php
index 923a13f..6080e29 100644
--- a/core/tests/Drupal/KernelTests/Core/Entity/EntityTranslationTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Entity/EntityTranslationTest.php
@@ -242,33 +242,35 @@ protected function doTestMultilingualProperties($entity_type) {
     // Create an additional entity with only the uid set. The uid for the
     // original language is the same of one used for a translation.
     $langcode = $this->langcodes[1];
-    $this->container->get('entity_type.manager')
-      ->getStorage($entity_type)
-      ->create(array(
+
+    /** @var \Drupal\Core\Entity\EntityStorageInterface $storage */
+    $storage= $this->container->get('entity_type.manager')
+      ->getStorage($entity_type);
+    $storage->create([
         'user_id' => $properties[$langcode]['user_id'],
         'name' => 'some name',
         $langcode_key => LanguageInterface::LANGCODE_NOT_SPECIFIED,
-      ))
+      ])
       ->save();
 
-    $entities = entity_load_multiple($entity_type);
+    $entities = $storage->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 = $storage->loadMultiple([$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));
+    $entities = $storage->loadByProperties(['name' => $name]);
     $this->assertEqual(count($entities), 2, format_string('%entity_type: Two entities correctly loaded by name.', array('%entity_type' => $entity_type)));
     // @todo The default language condition should go away in favor of an
     // explicit parameter.
-    $entities = entity_load_multiple_by_properties($entity_type, array('name' => $properties[$langcode]['name'][0], $default_langcode_key => 0));
+    $entities = $storage->loadByProperties(['name' => $properties[$langcode]['name'][0], $default_langcode_key => 0]);
     $this->assertEqual(count($entities), 1, format_string('%entity_type: One entity correctly loaded by name translation.', array('%entity_type' => $entity_type)));
-    $entities = entity_load_multiple_by_properties($entity_type, array($langcode_key => $default_langcode, 'name' => $name));
+    $entities = $storage->loadByProperties([$langcode_key => $default_langcode, 'name' => $name]);
     $this->assertEqual(count($entities), 1, format_string('%entity_type: One entity correctly loaded by name and language.', array('%entity_type' => $entity_type)));
 
-    $entities = entity_load_multiple_by_properties($entity_type, array($langcode_key => $langcode, 'name' => $properties[$langcode]['name'][0]));
+    $entities = $storage->loadByProperties([$langcode_key => $langcode, 'name' => $properties[$langcode]['name'][0]]);
     $this->assertEqual(count($entities), 0, format_string('%entity_type: No entity loaded by name translation specifying the translation language.', array('%entity_type' => $entity_type)));
-    $entities = entity_load_multiple_by_properties($entity_type, array($langcode_key => $langcode, 'name' => $properties[$langcode]['name'][0], $default_langcode_key => 0));
+    $entities = $storage->loadByProperties([$langcode_key => $langcode, 'name' => $properties[$langcode]['name'][0], $default_langcode_key => 0]);
     $this->assertEqual(count($entities), 1, format_string('%entity_type: One entity loaded by name translation and language specifying to look for translations.', array('%entity_type' => $entity_type)));
-    $entities = entity_load_multiple_by_properties($entity_type, array('user_id' => $properties[$langcode]['user_id'][0], $default_langcode_key => NULL));
+    $entities = $storage->loadByProperties(['user_id' => $properties[$langcode]['user_id'][0], $default_langcode_key => NULL]);
     $this->assertEqual(count($entities), 2, format_string('%entity_type: Two entities loaded by uid without caring about property translatability.', array('%entity_type' => $entity_type)));
 
     // Test property conditions and orders with multiple languages in the same
@@ -284,7 +286,8 @@ protected function doTestMultilingualProperties($entity_type) {
     $this->assertEqual(count($result), 1, format_string('%entity_type: One entity loaded by name and uid using different language meta conditions.', array('%entity_type' => $entity_type)));
 
     // Test mixed property and field conditions.
-    $entity = entity_load($entity_type, reset($result), TRUE);
+    $storage->resetCache($result);
+    $entity = $storage->load(reset($result));
     $field_value = $this->randomString();
     $entity->getTranslation($langcode)->set($this->fieldName, array(array('value' => $field_value)));
     $entity->save();
diff --git a/core/tests/Drupal/KernelTests/Core/Entity/EntityUUIDTest.php b/core/tests/Drupal/KernelTests/Core/Entity/EntityUUIDTest.php
index 5b0a643..3b2ce35 100644
--- a/core/tests/Drupal/KernelTests/Core/Entity/EntityUUIDTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Entity/EntityUUIDTest.php
@@ -65,7 +65,11 @@ protected function assertCRUD($entity_type) {
     $this->assertIdentical($entity->uuid(), $uuid);
 
     // Verify that the UUID is retained upon loading.
-    $entity_loaded = entity_load($entity_type, $entity->id(), TRUE);
+    /** @var \Drupal\Core\Entity\EntityStorageInterface $storage */
+    $storage= $this->container->get('entity_type.manager')
+      ->getStorage($entity_type);
+    $storage->resetCache([$entity->id()]);
+    $entity_loaded = $storage->load($entity->id());
     $this->assertIdentical($entity_loaded->uuid(), $uuid);
 
     // Verify that \Drupal::entityManager()->loadEntityByUuid() loads the same entity.
