diff --git a/core/modules/views/src/EventSubscriber/ViewsEntitySchemaSubscriber.php b/core/modules/views/src/EventSubscriber/ViewsEntitySchemaSubscriber.php
index 6060ae40bf..7de1c2e15a 100644
--- a/core/modules/views/src/EventSubscriber/ViewsEntitySchemaSubscriber.php
+++ b/core/modules/views/src/EventSubscriber/ViewsEntitySchemaSubscriber.php
@@ -318,14 +318,21 @@ protected function dataTableAddition($all_views, EntityTypeInterface $entity_typ
     $storage->setEntityType($entity_type);
     $table_mapping = $storage->getTableMapping();
     $data_table_fields = $table_mapping->getFieldNames($new_data_table);
-    $base_table_fields = $table_mapping->getFieldNames($base_table);
 
     $data_table = $new_data_table;
 
-    $this->processHandlers($all_views, function (array &$handler_config) use ($entity_type_id, $base_table, $data_table, $base_table_fields, $data_table_fields) {
+    // If the entity base table was the view base table, then switch to the
+    // entity data table.
+    foreach ($all_views as $view) {
+      if ($view->get('base_table') === $base_table) {
+        $view->set('base_table', $data_table);
+      }
+    }
+
+    $this->processHandlers($all_views, function (array &$handler_config) use ($entity_type_id, $base_table, $data_table, $data_table_fields) {
       if (isset($handler_config['entity_type']) && isset($handler_config['entity_field']) && $handler_config['entity_type'] == $entity_type_id) {
-        // Move all fields which just exists on the data table.
-        if ($handler_config['table'] == $base_table && in_array($handler_config['entity_field'], $data_table_fields) && !in_array($handler_config['entity_field'], $base_table_fields)) {
+        // Move all fields which exists on the data table.
+        if ($handler_config['table'] == $base_table && in_array($handler_config['entity_field'], $data_table_fields)) {
           $handler_config['table'] = $data_table;
         }
       }
@@ -345,6 +352,15 @@ protected function dataTableAddition($all_views, EntityTypeInterface $entity_typ
    *   The name of the base table.
    */
   protected function dataTableRemoval($all_views, $entity_type_id, $old_data_table, $base_table) {
+
+    // If the entity data table was the view base table, then switch to the
+    // entity base table.
+    foreach ($all_views as $view) {
+      if ($view->get('base_table') === $old_data_table) {
+        $view->set('base_table', $base_table);
+      }
+    }
+
     // We move back the data table back to the base table.
     $this->processHandlers($all_views, function (array &$handler_config) use ($entity_type_id, $old_data_table, $base_table) {
       if (isset($handler_config['entity_type']) && $handler_config['entity_type'] == $entity_type_id) {
diff --git a/core/modules/views/tests/src/Kernel/EventSubscriber/ViewsEntitySchemaSubscriberIntegrationTest.php b/core/modules/views/tests/src/Kernel/EventSubscriber/ViewsEntitySchemaSubscriberIntegrationTest.php
index 2319a7064a..0ecfc2b08a 100644
--- a/core/modules/views/tests/src/Kernel/EventSubscriber/ViewsEntitySchemaSubscriberIntegrationTest.php
+++ b/core/modules/views/tests/src/Kernel/EventSubscriber/ViewsEntitySchemaSubscriberIntegrationTest.php
@@ -150,9 +150,9 @@ public function testDataTableRename() {
 
     $entity_storage = $this->entityManager->getStorage('view');
     $view = $entity_storage->load('test_view_entity_test_data');
-    $this->assertEqual('entity_test_update', $view->get('base_table'));
+    $this->assertEqual('entity_test_update_data', $view->get('base_table'));
     $display = $view->getDisplay('default');
-    $this->assertEqual('entity_test_update', $display['display_options']['fields']['id']['table']);
+    $this->assertEqual('entity_test_update_data', $display['display_options']['fields']['id']['table']);
     // Ensure that the data table is used.
     $this->assertEqual('entity_test_update_data', $display['display_options']['fields']['name']['table']);
 
@@ -164,9 +164,9 @@ public function testDataTableRename() {
     $view = $entity_storage->load('test_view_entity_test_data');
 
     // Ensure the data table got renamed, so also the views fields.
-    $this->assertEqual('entity_test_update', $view->get('base_table'));
+    $this->assertEqual('entity_test_update_data_new', $view->get('base_table'));
     $display = $view->getDisplay('default');
-    $this->assertEqual('entity_test_update', $display['display_options']['fields']['id']['table']);
+    $this->assertEqual('entity_test_update_data_new', $display['display_options']['fields']['id']['table']);
     $this->assertEqual('entity_test_update_data_new', $display['display_options']['fields']['name']['table']);
   }
 
@@ -213,9 +213,9 @@ public function testRevisionDataTableRename() {
     /** @var \Drupal\views\Entity\View $view */
     $entity_storage = $this->entityManager->getStorage('view');
     $view = $entity_storage->load('test_view_entity_test_revision');
-    $this->assertEqual('entity_test_update_revision', $view->get('base_table'));
+    $this->assertEqual('entity_test_update_revision_data', $view->get('base_table'));
     $display = $view->getDisplay('default');
-    $this->assertEqual('entity_test_update_revision', $display['display_options']['fields']['id']['table']);
+    $this->assertEqual('entity_test_update_revision_data', $display['display_options']['fields']['id']['table']);
     $this->assertEqual('entity_test_update_revision_data', $display['display_options']['fields']['name']['table']);
 
     $this->renameRevisionDataTable();
@@ -226,9 +226,9 @@ public function testRevisionDataTableRename() {
     $view = $entity_storage->load('test_view_entity_test_revision');
 
     // Ensure the base table got renamed, so also the views fields.
-    $this->assertEqual('entity_test_update_revision', $view->get('base_table'));
+    $this->assertEqual('entity_test_update_revision_data_new', $view->get('base_table'));
     $display = $view->getDisplay('default');
-    $this->assertEqual('entity_test_update_revision', $display['display_options']['fields']['id']['table']);
+    $this->assertEqual('entity_test_update_revision_data_new', $display['display_options']['fields']['id']['table']);
     $this->assertEqual('entity_test_update_revision_data_new', $display['display_options']['fields']['name']['table']);
   }
 
@@ -244,9 +244,9 @@ public function testDataTableAddition() {
     $view = $entity_storage->load('test_view_entity_test');
 
     // Ensure the data table got renamed, so also the views fields.
-    $this->assertEqual('entity_test_update', $view->get('base_table'));
+    $this->assertEqual('entity_test_update_data', $view->get('base_table'));
     $display = $view->getDisplay('default');
-    $this->assertEqual('entity_test_update', $display['display_options']['fields']['id']['table']);
+    $this->assertEqual('entity_test_update_data', $display['display_options']['fields']['id']['table']);
     $this->assertEqual('entity_test_update_data', $display['display_options']['fields']['name']['table']);
   }
 
@@ -301,8 +301,8 @@ public function testVariousTableUpdates() {
     $this->entityDefinitionUpdateManager->applyUpdates();
     list($view, $display) = $this->getUpdatedViewAndDisplay();
 
-    $this->assertEqual('entity_test_update', $view->get('base_table'));
-    $this->assertEqual('entity_test_update', $display['display_options']['fields']['id']['table']);
+    $this->assertEqual('entity_test_update_data', $view->get('base_table'));
+    $this->assertEqual('entity_test_update_data', $display['display_options']['fields']['id']['table']);
     $this->assertEqual('entity_test_update_data', $display['display_options']['fields']['name']['table']);
 
     $this->updateEntityTypeToNotTranslatable();
@@ -320,24 +320,24 @@ public function testVariousTableUpdates() {
     $this->entityDefinitionUpdateManager->applyUpdates();
     list($view, $display) = $this->getUpdatedViewAndDisplay();
 
-    $this->assertEqual('entity_test_update', $view->get('base_table'));
-    $this->assertEqual('entity_test_update', $display['display_options']['fields']['id']['table']);
+    $this->assertEqual('entity_test_update_data', $view->get('base_table'));
+    $this->assertEqual('entity_test_update_data', $display['display_options']['fields']['id']['table']);
     $this->assertEqual('entity_test_update_data', $display['display_options']['fields']['name']['table']);
 
     $this->updateEntityTypeToRevisionable();
     $this->entityDefinitionUpdateManager->applyUpdates();
     list($view, $display) = $this->getUpdatedViewAndDisplay();
 
-    $this->assertEqual('entity_test_update', $view->get('base_table'));
-    $this->assertEqual('entity_test_update', $display['display_options']['fields']['id']['table']);
+    $this->assertEqual('entity_test_update_data', $view->get('base_table'));
+    $this->assertEqual('entity_test_update_data', $display['display_options']['fields']['id']['table']);
     $this->assertEqual('entity_test_update_data', $display['display_options']['fields']['name']['table']);
 
     $this->updateEntityTypeToNotRevisionable();
     $this->entityDefinitionUpdateManager->applyUpdates();
     list($view, $display) = $this->getUpdatedViewAndDisplay();
 
-    $this->assertEqual('entity_test_update', $view->get('base_table'));
-    $this->assertEqual('entity_test_update', $display['display_options']['fields']['id']['table']);
+    $this->assertEqual('entity_test_update_data', $view->get('base_table'));
+    $this->assertEqual('entity_test_update_data', $display['display_options']['fields']['id']['table']);
     $this->assertEqual('entity_test_update_data', $display['display_options']['fields']['name']['table']);
 
     $this->resetEntityType();
@@ -354,8 +354,8 @@ public function testVariousTableUpdates() {
     $this->entityDefinitionUpdateManager->applyUpdates();
     list($view, $display) = $this->getUpdatedViewAndDisplay();
 
-    $this->assertEqual('entity_test_update', $view->get('base_table'));
-    $this->assertEqual('entity_test_update', $display['display_options']['fields']['id']['table']);
+    $this->assertEqual('entity_test_update_data', $view->get('base_table'));
+    $this->assertEqual('entity_test_update_data', $display['display_options']['fields']['id']['table']);
     $this->assertEqual('entity_test_update_data', $display['display_options']['fields']['name']['table']);
 
     $this->updateEntityTypeToNotTranslatable();
@@ -393,8 +393,8 @@ public function testVariousTableUpdates() {
     $this->entityDefinitionUpdateManager->applyUpdates();
     list($view, $display) = $this->getUpdatedViewAndDisplay();
 
-    $this->assertEqual('entity_test_update', $view->get('base_table'));
-    $this->assertEqual('entity_test_update', $display['display_options']['fields']['id']['table']);
+    $this->assertEqual('entity_test_update_data', $view->get('base_table'));
+    $this->assertEqual('entity_test_update_data', $display['display_options']['fields']['id']['table']);
     $this->assertEqual('entity_test_update_data', $display['display_options']['fields']['name']['table']);
 
     $this->updateEntityTypeToNotRevisionable();
@@ -427,8 +427,8 @@ public function testVariousTableUpdatesForRevisionView() {
     $this->entityDefinitionUpdateManager->applyUpdates();
     list($view, $display) = $this->getUpdatedViewAndDisplay(TRUE);
 
-    $this->assertEqual('entity_test_update_revision', $view->get('base_table'));
-    $this->assertEqual('entity_test_update_revision', $display['display_options']['fields']['id']['table']);
+    $this->assertEqual('entity_test_update_revision_data', $view->get('base_table'));
+    $this->assertEqual('entity_test_update_revision_data', $display['display_options']['fields']['id']['table']);
     $this->assertEqual('entity_test_update_revision_data', $display['display_options']['fields']['name']['table']);
 
     $this->updateEntityTypeToNotTranslatable();
