diff --git a/core/modules/views/src/EntityViewsData.php b/core/modules/views/src/EntityViewsData.php
index a9bc03e..71a1be0 100644
--- a/core/modules/views/src/EntityViewsData.php
+++ b/core/modules/views/src/EntityViewsData.php
@@ -152,13 +152,17 @@ public function getViewsData() {
       }
     }
 
-    $data[$base_table]['operations'] = array(
-      'field' => array(
-        'title' => $this->t('Operations links'),
-        'help' => $this->t('Provides links to perform entity operations.'),
-        'id' => 'entity_operations',
-      ),
-    );
+    // Entity types must implement a list_builder in order to use Views'
+    // entity operations field.
+    if ($this->entityType->hasHandlerClass('list_builder')) {
+      $data[$base_table]['operations'] = array(
+        'field' => array(
+          'title' => $this->t('Operations links'),
+          'help' => $this->t('Provides links to perform entity operations.'),
+          'id' => 'entity_operations',
+        ),
+      );
+    }
 
     // Setup relations to the revisions/property data.
     if ($data_table) {
diff --git a/core/modules/views/tests/src/Unit/EntityViewsDataTest.php b/core/modules/views/tests/src/Unit/EntityViewsDataTest.php
index 9a65d6e..dfdc0bd 100644
--- a/core/modules/views/tests/src/Unit/EntityViewsDataTest.php
+++ b/core/modules/views/tests/src/Unit/EntityViewsDataTest.php
@@ -775,6 +775,26 @@ public function testEntityLinksJustEditForm() {
   }
 
   /**
+   * @covers ::getViewsData
+   */
+  public function testGetViewsDataWithoutEntityOperations() {
+    // Make sure there is no list builder. The API does not document is
+    // supports resetting entity handlers, so this might break in the future.
+    $this->baseEntityType->setListBuilderClass(NULL);
+    $data = $this->viewsData->getViewsData();
+    $this->assertArrayNotHasKey('operations', $data[$this->baseEntityType->getBaseTable()]);
+  }
+
+  /**
+   * @covers ::getViewsData
+   */
+  public function testGetViewsDataWithEntityOperations() {
+    $this->baseEntityType->setListBuilderClass('\Drupal\Core\Entity\EntityListBuilder');
+    $data = $this->viewsData->getViewsData();
+    $this->assertSame('entity_operations', $data[$this->baseEntityType->getBaseTable()]['operations']['field']['id']);
+  }
+
+  /**
    * Tests views data for a string field.
    *
    * @param $data
diff --git a/core/modules/views/views.install b/core/modules/views/views.install
index fd49684..345b569 100644
--- a/core/modules/views/views.install
+++ b/core/modules/views/views.install
@@ -313,3 +313,21 @@ function _views_update_argument_map($displays) {
 /**
  * @} End of "addtogroup updates-8.0.0-beta".
  */
+
+/**
+ * @addtogroup updates-8.0.0-rc
+ * @{
+ */
+
+/**
+ * Clear caches to fix entity operations field.
+ */
+function views_update_8003() {
+  // Empty update to cause a cache flush so that views data is rebuilt. Entity
+  // types that don't implement a list builder cannot have the entity operations
+  // field.
+}
+
+/**
+ * @} End of "addtogroup updates-8.0.0-rc".
+ */
