diff --git a/core/lib/Drupal/Core/Entity/DatabaseStorageControllerNG.php b/core/lib/Drupal/Core/Entity/DatabaseStorageControllerNG.php
index 6d7d1ec..8741e6d 100644
--- a/core/lib/Drupal/Core/Entity/DatabaseStorageControllerNG.php
+++ b/core/lib/Drupal/Core/Entity/DatabaseStorageControllerNG.php
@@ -228,7 +228,6 @@ protected function attachPropertyData(array &$entities, $load_revision = FALSE)
 
       // Fetch the field definitions to check which field is translatable.
       $field_definition = $this->getFieldDefinitions(array());
-      $data_fields = array_flip($this->entityInfo['schema_fields_sql']['data_table']);
 
       foreach ($data as $values) {
         $id = $values[$this->idKey];
@@ -239,13 +238,9 @@ protected function attachPropertyData(array &$entities, $load_revision = FALSE)
 
         foreach ($field_definition as $name => $definition) {
           // Set translatable properties only.
-          if (isset($data_fields[$name]) && !empty($definition['translatable'])) {
+          if (isset($values[$name]) && !empty($definition['translatable'])) {
             $translation->{$name}->value = $values[$name];
           }
-          // Avoid initializing configurable fields before loading them.
-          elseif (!empty($definition['configurable'])) {
-            unset($entities[$id]->fields[$name]);
-          }
         }
       }
     }
diff --git a/core/modules/field_sql_storage/field_sql_storage.module b/core/modules/field_sql_storage/field_sql_storage.module
index accca35..72fbe22 100644
--- a/core/modules/field_sql_storage/field_sql_storage.module
+++ b/core/modules/field_sql_storage/field_sql_storage.module
@@ -377,6 +377,9 @@ function field_sql_storage_field_storage_load($entity_type, $entities, $age, $fi
     foreach ($results as $row) {
       if (!isset($delta_count[$row->entity_id][$row->langcode])) {
         $delta_count[$row->entity_id][$row->langcode] = 0;
+        // Start with a fresh array: this ensures the array cardinality matches
+        // the delta count, as unforeseen existing values might mess this up.
+        $entities[$row->entity_id]->{$field_name}[$row->langcode] = array();
       }
 
       if ($field['cardinality'] == FIELD_CARDINALITY_UNLIMITED || $delta_count[$row->entity_id][$row->langcode] < $field['cardinality']) {
