diff --git a/includes/common.inc b/includes/common.inc
index 03bf4115152a311a3801df81b7ea9fb709c364c1..07422d08ddf70ed7b2387cd4754d9112c86bacf5 100644
--- a/includes/common.inc
+++ b/includes/common.inc
@@ -6689,6 +6689,14 @@ function entity_get_info($entity_type = NULL) {
         if (empty($entity_info[$name]['entity keys']['bundle']) && empty($entity_info[$name]['bundles'])) {
           $entity_info[$name]['bundles'] = array($name => array('label' => $entity_info[$name]['label']));
         }
+        // Prepare entity schema fields SQL info for
+        // DrupalEntityControllerInterface::buildQuery().
+        if (isset($entity_info[$name]['base table'])) {
+          $entity_info[$name]['schema_fields_sql']['base table'] = drupal_schema_fields_sql($entity_info[$name]['base table']);
+          if (isset($entity_info[$name]['revision table'])) {
+            $entity_info[$name]['schema_fields_sql']['revision table'] = drupal_schema_fields_sql($entity_info[$name]['revision table']);
+          }
+        }
       }
       // Let other modules alter the entity info.
       drupal_alter('entity_info', $entity_info);
diff --git a/includes/entity.inc b/includes/entity.inc
index 59473c2768bde6c8bba0b8cd685c6c0c07614c67..b67a31798468b0ee33c313c2f2b060e35c27fc46 100644
--- a/includes/entity.inc
+++ b/includes/entity.inc
@@ -251,11 +251,11 @@ protected function buildQuery($ids, $conditions = array(), $revision_id = FALSE)
     }
 
     // Add fields from the {entity} table.
-    $entity_fields = drupal_schema_fields_sql($this->entityInfo['base table']);
+    $entity_fields = $this->entityInfo['schema_fields_sql']['base table'];
 
     if ($this->revisionKey) {
       // Add all fields from the {entity_revision} table.
-      $entity_revision_fields = drupal_map_assoc(drupal_schema_fields_sql($this->revisionTable));
+      $entity_revision_fields = drupal_map_assoc($this->entityInfo['schema_fields_sql']['revision table']);
       // The id field is provided by entity, so remove it.
       unset($entity_revision_fields[$this->idKey]);
 
diff --git a/modules/simpletest/tests/entity_cache_test_dependency.module b/modules/simpletest/tests/entity_cache_test_dependency.module
index 19d51cc36883d91c2d8586a594bd56d09d5307b4..1f9c1c3ba9b249fac65bf940e55d009ea58bff2d 100644
--- a/modules/simpletest/tests/entity_cache_test_dependency.module
+++ b/modules/simpletest/tests/entity_cache_test_dependency.module
@@ -13,7 +13,6 @@ function entity_cache_test_dependency_entity_info() {
   return array(
     'entity_cache_test' => array(
       'label' => 'Entity Cache Test',
-      'base table' => 'entity_cache_test',
     ),
   );
 }