diff --git a/core/lib/Drupal/Core/Entity/ContentEntityBase.php b/core/lib/Drupal/Core/Entity/ContentEntityBase.php
index f63b1a0..bc3231f 100644
--- a/core/lib/Drupal/Core/Entity/ContentEntityBase.php
+++ b/core/lib/Drupal/Core/Entity/ContentEntityBase.php
@@ -913,7 +913,7 @@ public function createDuplicate() {
     }
 
     // Check whether the entity type supports revisions and initialize it if so.
-    if ($entity_type->hasKey('revision')) {
+    if ($entity_type->isRevisionable()) {
       $duplicate->{$entity_type->getKey('revision')}->value = NULL;
     }
 
diff --git a/core/lib/Drupal/Core/Entity/EntityType.php b/core/lib/Drupal/Core/Entity/EntityType.php
index 93f6062..13cd9ea 100644
--- a/core/lib/Drupal/Core/Entity/EntityType.php
+++ b/core/lib/Drupal/Core/Entity/EntityType.php
@@ -533,6 +533,14 @@ public function isTranslatable() {
   /**
    * {@inheritdoc}
    */
+  public function isRevisionable() {
+    // Entity types are revisionable if a revision key has been specified.
+    return (bool) $this->getKey('revision');
+  }
+
+  /**
+   * {@inheritdoc}
+   */
   public function getConfigPrefix() {
     return FALSE;
   }
diff --git a/core/lib/Drupal/Core/Entity/EntityTypeInterface.php b/core/lib/Drupal/Core/Entity/EntityTypeInterface.php
index 5934322..264c61b 100644
--- a/core/lib/Drupal/Core/Entity/EntityTypeInterface.php
+++ b/core/lib/Drupal/Core/Entity/EntityTypeInterface.php
@@ -75,8 +75,8 @@ public function getClass();
    *     property and its value must be numeric.
    *   - revision: (optional) The name of the property that contains the
    *     revision ID of the entity. The Field API assumes that all revision IDs
-   *     are unique across all entities of a type. This entry can be omitted if
-   *     the entities of this type are not versionable.
+   *     are unique across all entities of a type. If this entry is omitted
+   *     the entities of this type are not revisionable.
    *   - bundle: (optional) The name of the property that contains the bundle
    *     name for the entity. The bundle name defines which set of fields are
    *     attached to the entity (e.g. what nodes call "content type"). This
@@ -532,6 +532,13 @@ public function getBaseTable();
   public function isTranslatable();
 
   /**
+   * Indicates whether entities of this type have revision support.
+   *
+   * @return bool
+   */
+  public function isRevisionable();
+
+  /**
    * Returns the config prefix used by the configuration entity type.
    *
    * @todo Used for configuration entities only.
diff --git a/core/lib/Drupal/Core/Entity/FieldableDatabaseStorageController.php b/core/lib/Drupal/Core/Entity/FieldableDatabaseStorageController.php
index 31b1613..9e92d40 100644
--- a/core/lib/Drupal/Core/Entity/FieldableDatabaseStorageController.php
+++ b/core/lib/Drupal/Core/Entity/FieldableDatabaseStorageController.php
@@ -113,8 +113,7 @@ public function __construct(EntityTypeInterface $entity_type, Connection $databa
     // Check if the entity type supports UUIDs.
     $this->uuidKey = $this->entityType->getKey('uuid');
 
-    // Check if the entity type supports revisions.
-    if ($this->entityType->hasKey('revision')) {
+    if ($this->entityType->isRevisionable()) {
       $this->revisionKey = $this->entityType->getKey('revision');
       $this->revisionTable = $this->entityType->getRevisionTable();
     }
diff --git a/core/tests/Drupal/Tests/Core/Entity/EntityTypeTest.php b/core/tests/Drupal/Tests/Core/Entity/EntityTypeTest.php
index d26ccd1..439a807 100644
--- a/core/tests/Drupal/Tests/Core/Entity/EntityTypeTest.php
+++ b/core/tests/Drupal/Tests/Core/Entity/EntityTypeTest.php
@@ -86,6 +86,18 @@ public function providerTestGetKeys() {
   }
 
   /**
+   * Tests the isRevisionable() method.
+   */
+  public function testIsRevisionable() {
+    $entity_type = $this->setUpEntityType(array('entity_keys' => array('id' => 'id')));
+    $this->assertFalse($entity_type->isRevisionable());
+    $entity_type = $this->setUpEntityType(array('entity_keys' => array('id' => 'id', 'revision' => FALSE)));
+    $this->assertFalse($entity_type->isRevisionable());
+    $entity_type = $this->setUpEntityType(array('entity_keys' => array('id' => 'id', 'revision' => TRUE)));
+    $this->assertTrue($entity_type->isRevisionable());
+  }
+
+  /**
    * Tests the getController() method.
    */
   public function testGetController() {
