diff --git a/core/lib/Drupal/Core/Entity/ContentEntityBase.php b/core/lib/Drupal/Core/Entity/ContentEntityBase.php
index 82e5241..0184ad7 100644
--- a/core/lib/Drupal/Core/Entity/ContentEntityBase.php
+++ b/core/lib/Drupal/Core/Entity/ContentEntityBase.php
@@ -164,7 +164,24 @@ public function __construct(array $values, $entity_type, $bundle = FALSE, $trans
   /**
    * {@inheritdoc}
    */
+  public function postCreate(EntityStorageControllerInterface $storage_controller) {
+    $this->newRevision = TRUE;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
   public function setNewRevision($value = TRUE) {
+
+    if (!$this->getEntityType()->getKey('revision')) {
+      throw new \LogicException(String::format('Entity type @entity_type does support revisions.'));
+    }
+
+    if ($value && !$this->newRevision) {
+      // When saving a new revision, set any existing revision ID to NULL so as
+      // to ensure that a new revision will actually be created.
+      $this->set($this->getEntityType()->getKey('revision'), NULL);
+    }
     $this->newRevision = $value;
   }
 
diff --git a/core/lib/Drupal/Core/Entity/FieldableDatabaseStorageController.php b/core/lib/Drupal/Core/Entity/FieldableDatabaseStorageController.php
index eaa4951..8d7f982 100644
--- a/core/lib/Drupal/Core/Entity/FieldableDatabaseStorageController.php
+++ b/core/lib/Drupal/Core/Entity/FieldableDatabaseStorageController.php
@@ -564,7 +564,9 @@ public function save(EntityInterface $entity) {
         if ($this->revisionDataTable) {
           $this->savePropertyData($entity, 'revision_data_table');
         }
-        $entity->setNewRevision(FALSE);
+        if ($this->revisionTable) {
+          $entity->setNewRevision(FALSE);
+        }
         $this->invokeFieldMethod('update', $entity);
         $this->saveFieldItems($entity, TRUE);
         $this->resetCache(array($entity->id()));
@@ -591,8 +593,11 @@ public function save(EntityInterface $entity) {
           $this->savePropertyData($entity, 'revision_data_table');
         }
 
-
         $entity->enforceIsNew(FALSE);
+        if ($this->revisionTable) {
+          $entity->setNewRevision(FALSE);
+        }
+
         $this->invokeFieldMethod('insert', $entity);
         $this->saveFieldItems($entity, FALSE);
         // Reset general caches, but keep caches specific to certain entities.
@@ -734,12 +739,6 @@ protected function mapToDataStorageRecord(EntityInterface $entity, $table_key =
   protected function saveRevision(EntityInterface $entity) {
     $record = $this->mapToStorageRecord($entity, 'revision_table');
 
-    // When saving a new revision, set any existing revision ID to NULL so as to
-    // ensure that a new revision will actually be created.
-    if ($entity->isNewRevision() && isset($record->{$this->revisionKey})) {
-      $record->{$this->revisionKey} = NULL;
-    }
-
     $entity->preSaveRevision($this, $record);
 
     if ($entity->isNewRevision()) {
diff --git a/core/modules/field/lib/Drupal/field/Tests/FieldAttachOtherTest.php b/core/modules/field/lib/Drupal/field/Tests/FieldAttachOtherTest.php
index 1c0518e..e10669a 100644
--- a/core/modules/field/lib/Drupal/field/Tests/FieldAttachOtherTest.php
+++ b/core/modules/field/lib/Drupal/field/Tests/FieldAttachOtherTest.php
@@ -38,6 +38,7 @@ public static function getInfo() {
 
   public function setUp() {
     parent::setUp();
+    $this->installSchema('entity_test', array('entity_test_rev', 'entity_test_rev_revision'));
     $this->createFieldWithInstance();
   }
 
@@ -197,8 +198,8 @@ function testFieldAttachCache() {
     $this->assertFalse(\Drupal::cache('field')->get($cid), 'Non-cached: no cache entry on insert and load');
 
     // Cacheable entity type.
-    $entity_type = 'entity_test_cache';
-    $this->createFieldWithInstance('_2', 'entity_test_cache');
+    $entity_type = 'entity_test_rev';
+    $this->createFieldWithInstance('_2', $entity_type);
     entity_info_cache_clear();
 
     $entity_init = entity_create($entity_type, array(
diff --git a/core/modules/system/lib/Drupal/system/Tests/Entity/EntityQueryTest.php b/core/modules/system/lib/Drupal/system/Tests/Entity/EntityQueryTest.php
index c01a2e2..bbea77c 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Entity/EntityQueryTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Entity/EntityQueryTest.php
@@ -447,7 +447,6 @@ protected function testCount() {
       'type' => $bundle,
     ));
     $entity->enforceIsNew();
-    $entity->setNewRevision();
     $entity->save();
 
     // As the single entity of this type we just saved does not have a value
