diff --git a/core/lib/Drupal/Core/Entity/ContentEntityBase.php b/core/lib/Drupal/Core/Entity/ContentEntityBase.php
index 4c0763b..3515e73 100644
--- a/core/lib/Drupal/Core/Entity/ContentEntityBase.php
+++ b/core/lib/Drupal/Core/Entity/ContentEntityBase.php
@@ -505,6 +505,41 @@ protected function getTranslatedField($name, $langcode) {
     return $this->fields[$name][$langcode];
   }
 
+
+  public function getFieldValue($field_name, $property) {
+    // If a field object is already instantiated for this field, use that.
+    if (isset($this->fields[$field_name])) {
+      return $this->get($field_name)->$property;
+    }
+
+    // Otherwise attempt to get the value from the values directly.
+    if (isset($this->values[$field_name][$this->activeLangcode])) {
+      $field_values = $this->values[$field_name][$this->activeLangcode];
+      if (isset($field_values[0][$property]) && is_array($field_values[0])) {
+        return $field_values[0][$property];
+      }
+      elseif (isset($field_values[$property]) && is_array($field_values)) {
+        return $field_values[$property];
+      }
+      elseif (!is_array($field_values)) {
+        return $field_values;
+      }
+    }
+    elseif ($this->values[$field_name][LanguageInterface::LANGCODE_DEFAULT]) {
+      $field_values = $this->values[$field_name][LanguageInterface::LANGCODE_DEFAULT];
+      if (isset($field_values[0][$property]) && is_array($field_values[0])) {
+        return $field_values[0][$property];
+      }
+      elseif (isset($field_values[$property]) && is_array($field_values)) {
+        return $field_values[$property];
+      }
+      elseif (!is_array($field_values)) {
+        return $field_values;
+      }
+    }
+
+  }
+
   /**
    * {@inheritdoc}
    */
diff --git a/core/modules/comment/src/CommentLazyBuilders.php b/core/modules/comment/src/CommentLazyBuilders.php
index d37ab61..2c6e938 100644
--- a/core/modules/comment/src/CommentLazyBuilders.php
+++ b/core/modules/comment/src/CommentLazyBuilders.php
@@ -168,7 +168,7 @@ public function renderLinks($comment_entity_id, $view_mode, $langcode, $is_in_pr
    */
   protected function buildLinks(CommentInterface $entity, EntityInterface $commented_entity) {
     $links = array();
-    $status = $commented_entity->get($entity->getFieldName())->status;
+    $status = $commented_entity->getFieldValue($entity->getFieldName(), 'status');
 
     if ($status == CommentItemInterface::OPEN) {
       if ($entity->access('delete')) {
diff --git a/core/modules/comment/src/Entity/Comment.php b/core/modules/comment/src/Entity/Comment.php
index b20d9bb..c2bd8de 100644
--- a/core/modules/comment/src/Entity/Comment.php
+++ b/core/modules/comment/src/Entity/Comment.php
@@ -361,21 +361,21 @@ public function getParentComment() {
    * {@inheritdoc}
    */
   public function getCommentedEntity() {
-    return $this->get('entity_id')->entity;
+    return $this->entityManager()->getStorage($this->getCommentedEntityTypeId())->load($this->getCommentedEntityId());;
   }
 
   /**
    * {@inheritdoc}
    */
   public function getCommentedEntityId() {
-    return $this->get('entity_id')->target_id;
+    return $this->getFieldValue('entity_id', 'target_id');
   }
 
   /**
    * {@inheritdoc}
    */
   public function getCommentedEntityTypeId() {
-    return $this->get('entity_type')->value;
+    return $this->getFieldValue('entity_type', 'value');
   }
 
   /**
@@ -390,7 +390,7 @@ public function setFieldName($field_name) {
    * {@inheritdoc}
    */
   public function getFieldName() {
-    return $this->get('field_name')->value;
+    return $this->getFieldValue('field_name', 'value');
   }
 
   /**
@@ -491,14 +491,14 @@ public function setCreatedTime($created) {
    * {@inheritdoc}
    */
   public function isPublished() {
-    return $this->get('status')->value == CommentInterface::PUBLISHED;
+    return $this->getFieldValue('status', 'value') == CommentInterface::PUBLISHED;
   }
 
   /**
    * {@inheritdoc}
    */
   public function getStatus() {
-    return $this->get('status')->value;
+    return $this->getFieldValue('status', 'value');
   }
 
   /**
