diff --git a/core/modules/options/lib/Drupal/options/Tests/OptionsDynamicValuesTest.php b/core/modules/options/lib/Drupal/options/Tests/OptionsDynamicValuesTest.php
index c270e4a..5d5ae3a 100644
--- a/core/modules/options/lib/Drupal/options/Tests/OptionsDynamicValuesTest.php
+++ b/core/modules/options/lib/Drupal/options/Tests/OptionsDynamicValuesTest.php
@@ -52,7 +52,7 @@ function setUp() {
       ))
       ->save();
 
-    // Create an entity and prepare test data that will be used by
+    // Create two entities and prepare test data that will be used by
     // options_test_dynamic_values_callback().
     $values = array(
       'user_id' => mt_rand(1, 10),
@@ -67,5 +67,19 @@ function setUp() {
       'bundle' => $this->entity->bundle(),
       'uri' => $uri['path'],
     );
+
+    $values = array(
+      'user_id' => mt_rand(1, 10),
+      'name' => $this->randomName(),
+    );
+    $this->entity_1 = entity_create('entity_test_rev', $values);
+    $this->entity_1->save();
+    $uri = $this->entity_1->uri();
+    $this->test_1 = array(
+      'label' => $this->entity_1->label(),
+      'uuid' => $this->entity_1->uuid(),
+      'bundle' => $this->entity_1->bundle(),
+      'uri' => $uri['path'],
+    );
   }
 }
diff --git a/core/modules/options/lib/Drupal/options/Tests/OptionsDynamicValuesValidationTest.php b/core/modules/options/lib/Drupal/options/Tests/OptionsDynamicValuesValidationTest.php
index f978a79..1f8c577 100644
--- a/core/modules/options/lib/Drupal/options/Tests/OptionsDynamicValuesValidationTest.php
+++ b/core/modules/options/lib/Drupal/options/Tests/OptionsDynamicValuesValidationTest.php
@@ -29,6 +29,11 @@ function testDynamicAllowedValues() {
       $violations = $this->entity->test_options->validate();
       $this->assertEqual(count($violations), 0, "$key is a valid value");
     }
+    foreach ($this->test_1 as $key => $value) {
+      $this->entity_1->test_options->value = $value;
+      $violations = $this->entity_1->test_options->validate();
+      $this->assertEqual(count($violations), 0, "$key is a valid value");
+    }
 
     // Now verify that validation does not pass against anything else.
     foreach ($this->test as $key => $value) {
diff --git a/core/modules/options/options.module b/core/modules/options/options.module
index e6ebdbe..c172302 100644
--- a/core/modules/options/options.module
+++ b/core/modules/options/options.module
@@ -245,7 +245,7 @@ function options_field_entity_delete(FieldInterface $field) {
 function options_allowed_values(FieldDefinitionInterface $field_definition, EntityInterface $entity) {
   $allowed_values = &drupal_static(__FUNCTION__, array());
 
-  $cache_id = implode(':', array($entity->entityType(), $entity->bundle(), $field_definition->getFieldName()));
+  $cache_id = implode(':', array($entity->entityType(), $entity->bundle(), $field_definition->getFieldName(),  $entity->uuid()));
   if (!isset($allowed_values[$cache_id])) {
     $function = $field_definition->getFieldSetting('allowed_values_function');
     // If $cacheable is FALSE, then the allowed values are not statically
diff --git a/core/modules/options/tests/options_test.module b/core/modules/options/tests/options_test.module
index 9346cf0..a0d358a 100644
--- a/core/modules/options/tests/options_test.module
+++ b/core/modules/options/tests/options_test.module
@@ -29,7 +29,7 @@ function options_test_allowed_values_callback(FieldDefinitionInterface $field_de
  * An entity-bound allowed values callback.
  */
 function options_test_dynamic_values_callback(FieldDefinitionInterface $field_definition, EntityInterface $entity, &$cacheable) {
-  $cacheable = FALSE;
+  $cacheable = TRUE;
   // We need the values of the entity as keys.
   $uri = $entity->uri();
   return drupal_map_assoc(array(
