diff --git a/views/handlers/entity_views_field_handler_helper.inc b/views/handlers/entity_views_field_handler_helper.inc
index 195a32f..fc0c108 100644
--- a/views/handlers/entity_views_field_handler_helper.inc
+++ b/views/handlers/entity_views_field_handler_helper.inc
@@ -61,9 +61,33 @@ class EntityFieldHandlerHelper {
    * Add the field for the entity ID (if necessary).
    */
   public static function query($handler) {
-    // Some of the parent handlers might require this.
-    $handler->field_alias = $handler->real_field;
-    $handler->base_field = self::get_selector_field_name($handler->real_field);
+    // Copied over from views_handler_field_entity::query().
+    // Sets table_alias (entity table), base_field (entity id field) and
+    // field_alias (the field's alias).
+    $handler->table_alias = $base_table = $handler->view->base_table;
+    $handler->base_field = $handler->view->base_field;
+
+    if (!empty($handler->relationship)) {
+      foreach ($handler->view->relationship as $relationship) {
+        if ($relationship->alias == $handler->relationship) {
+          $base_table = $relationship->definition['base'];
+          $handler->table_alias = $relationship->alias;
+
+          $table_data = views_fetch_data($base_table);
+          $handler->base_field = empty($relationship->definition['base field']) ? $table_data['table']['base']['field'] : $relationship->definition['base field'];
+        }
+      }
+    }
+
+    // Add the field if the query back-end implements an add_field() method,
+    // just like the default back-end.
+    if (method_exists($handler->query, 'add_field')) {
+      $handler->field_alias = $handler->query->add_field($handler->table_alias, $handler->base_field, '');
+    }
+    else {
+      // To ensure there is an alias just set the field alias to the real field.
+      $handler->field_alias = $handler->real_field;
+    }
   }
 
   /**
@@ -276,7 +300,7 @@ class EntityFieldHandlerHelper {
     if (!isset($field) && isset($handler->current_value)) {
       return $handler->current_value;
     }
-    $field = isset($field) ? $field : $handler->base_field;
+    $field = isset($field) ? $field : self::get_selector_field_name($handler->real_field);
     $selector = self::construct_property_selector($handler);
     $selector = $selector ? "$selector:$field" : $field;
     if (!isset($values->_entity_properties)) {
diff --git a/views/handlers/entity_views_handler_field_boolean.inc b/views/handlers/entity_views_handler_field_boolean.inc
index 66a822d..dbb9e27 100644
--- a/views/handlers/entity_views_handler_field_boolean.inc
+++ b/views/handlers/entity_views_handler_field_boolean.inc
@@ -31,11 +31,6 @@ class entity_views_handler_field_boolean extends views_handler_field_boolean {
   public $wrappers = array();
 
   /**
-   * The base name of the field, without data selector.
-   */
-  public $base_field;
-
-  /**
    * Stores the current value when rendering list fields.
    */
   public $current_value;
diff --git a/views/handlers/entity_views_handler_field_date.inc b/views/handlers/entity_views_handler_field_date.inc
index 2c3e459..5058607 100644
--- a/views/handlers/entity_views_handler_field_date.inc
+++ b/views/handlers/entity_views_handler_field_date.inc
@@ -31,11 +31,6 @@ class entity_views_handler_field_date extends views_handler_field_date {
   public $wrappers = array();
 
   /**
-   * The base name of the field, without data selector.
-   */
-  public $base_field;
-
-  /**
    * Stores the current value when rendering list fields.
    */
   public $current_value;
diff --git a/views/handlers/entity_views_handler_field_duration.inc b/views/handlers/entity_views_handler_field_duration.inc
index 1a7096d..186af70 100644
--- a/views/handlers/entity_views_handler_field_duration.inc
+++ b/views/handlers/entity_views_handler_field_duration.inc
@@ -28,11 +28,6 @@ class entity_views_handler_field_duration extends views_handler_field {
   public $wrappers = array();
 
   /**
-   * The base name of the field, without data selector.
-   */
-  public $base_field;
-
-  /**
    * Stores the current value when rendering list fields.
    */
   public $current_value;
diff --git a/views/handlers/entity_views_handler_field_entity.inc b/views/handlers/entity_views_handler_field_entity.inc
index 7ce71c7..b544bb6 100644
--- a/views/handlers/entity_views_handler_field_entity.inc
+++ b/views/handlers/entity_views_handler_field_entity.inc
@@ -18,10 +18,24 @@
 class entity_views_handler_field_entity extends views_handler_field_entity {
 
   /**
+  * Stores the entity type which is loaded by this field.
+  */
+  public $entity_type;
+
+  /**
+  * Stores the result entities' metadata wrappers.
+  */
+  public $wrappers = array();
+
+  /**
+  * Stores the current value when rendering list fields.
+  */
+  public $current_value;
+
+  /**
    * Overridden to add the field for the entity ID (if necessary).
    */
   public function query() {
-    parent::query();
     EntityFieldHandlerHelper::query($this);
   }
 
diff --git a/views/handlers/entity_views_handler_field_field.inc b/views/handlers/entity_views_handler_field_field.inc
index af956d6..f3ebc66 100644
--- a/views/handlers/entity_views_handler_field_field.inc
+++ b/views/handlers/entity_views_handler_field_field.inc
@@ -31,11 +31,6 @@ class entity_views_handler_field_field extends views_handler_field_field {
   public $wrappers = array();
 
   /**
-   * The base name of the field, without data selector.
-   */
-  public $base_field;
-
-  /**
    * The entity for which this field is currently rendered.
    */
   public $entity;
diff --git a/views/handlers/entity_views_handler_field_numeric.inc b/views/handlers/entity_views_handler_field_numeric.inc
index 3ddd9d1..7c0bfee 100644
--- a/views/handlers/entity_views_handler_field_numeric.inc
+++ b/views/handlers/entity_views_handler_field_numeric.inc
@@ -31,11 +31,6 @@ class entity_views_handler_field_numeric extends views_handler_field_numeric {
   public $wrappers = array();
 
   /**
-   * The base name of the field, without data selector.
-   */
-  public $base_field;
-
-  /**
    * Stores the current value when rendering list fields.
    */
   public $current_value;
diff --git a/views/handlers/entity_views_handler_field_options.inc b/views/handlers/entity_views_handler_field_options.inc
index 95b557a..237348b 100644
--- a/views/handlers/entity_views_handler_field_options.inc
+++ b/views/handlers/entity_views_handler_field_options.inc
@@ -28,11 +28,6 @@ class entity_views_handler_field_options extends views_handler_field {
   public $wrappers = array();
 
   /**
-   * The base name of the field, without data selector.
-   */
-  public $base_field;
-
-  /**
    * Stores the current value when rendering list fields.
    */
   public $current_value;
@@ -109,7 +104,9 @@ class entity_views_handler_field_options extends views_handler_field {
       $this->option_list = array();
       $callback = $this->definition['options callback'];
       if (is_callable($callback['function'])) {
-        $this->option_list = call_user_func($callback['function'], $this->base_field, $callback['info'], 'view');
+        // If a selector is used, get the name of the selected field.
+        $field_name = EntityFieldHandlerHelper::get_selector_field_name($this->real_field);
+        $this->option_list = call_user_func($callback['function'], $field_name, $callback['info'], 'view');
       }
     }
     if ($this->options['format_name'] && isset($this->option_list[$value])) {
diff --git a/views/handlers/entity_views_handler_field_text.inc b/views/handlers/entity_views_handler_field_text.inc
index 99d4579..952e7aa 100644
--- a/views/handlers/entity_views_handler_field_text.inc
+++ b/views/handlers/entity_views_handler_field_text.inc
@@ -31,11 +31,6 @@ class entity_views_handler_field_text extends views_handler_field {
   public $wrappers = array();
 
   /**
-   * The base name of the field, without data selector.
-   */
-  public $base_field;
-
-  /**
    * Stores the current value when rendering list fields.
    */
   public $current_value;
diff --git a/views/handlers/entity_views_handler_field_uri.inc b/views/handlers/entity_views_handler_field_uri.inc
index 359bbe1..4ca1fdd 100644
--- a/views/handlers/entity_views_handler_field_uri.inc
+++ b/views/handlers/entity_views_handler_field_uri.inc
@@ -31,11 +31,6 @@ class entity_views_handler_field_uri extends views_handler_field_url {
   public $wrappers = array();
 
   /**
-   * The base name of the field, without data selector.
-   */
-  public $base_field;
-
-  /**
    * Stores the current value when rendering list fields.
    */
   public $current_value;
