diff --git views/entity.views.inc views/entity.views.inc
index 19b795f..63d92a9 100644
--- views/entity.views.inc
+++ views/entity.views.inc
@@ -18,9 +18,15 @@ function entity_views_data() {
     }
     if ($info['views controller class']) {
       $controller = new $info['views controller class']($type);
-      $data += $controller->views_data();
+      // Relationship data may return views data for already existing tables,
+      // so merge results on the second level.
+      foreach ($controller->views_data() as $table => $table_data) {
+        $data += array($table => array());
+        $data[$table] = array_merge($data[$table], $table_data);
+      }
     }
   }
+
   return $data;
 }
 
@@ -48,6 +54,8 @@ class EntityDefaultViewsController {
    */
   public function views_data() {
     $data = array();
+    $this->relationships = array();
+
     if (!empty($this->info['base table'])) {
       $table = $this->info['base table'];
       // Define the base group of this table. Fields that don't
@@ -61,6 +69,9 @@ class EntityDefaultViewsController {
         'help' => '',
       );
       $data[$table] += $this->schema_fields();
+
+      // Add in any reverse-relationships which have been determined.
+      $data += $this->relationships;
     }
     return $data;
   }
@@ -98,6 +109,23 @@ class EntityDefaultViewsController {
 
     // Add in relationships to related entities.
     if (($info = entity_get_info($type)) && !empty($info['base table'])) {
+
+      // Prepare reversed relationship data.
+      $label_lowercase = drupal_strtolower($this->info['label'][0]) . drupal_substr($this->info['label'], 1);
+      $property_label_lowercase = drupal_strtolower($property_info['label'][0]) . drupal_substr($property_info['label'], 1);
+
+      $this->relationships[$info['base table']][$this->info['base table']] = array(
+        'title' => $this->info['label'],
+        'help' => t("Associated @label via the @label's @property.", array('@label' => $label_lowercase, '@property' => $property_label_lowercase)),
+        'relationship' => array(
+          'label' => $this->info['label'],
+          'handler' => 'views_handler_relationship',
+          'base' => $this->info['base table'],
+          'base field' => $views_field_name,
+          'relationship field' => isset($info['entity keys']['name']) ? $info['entity keys']['name'] : $info['entity keys']['id'],
+        ),
+      );
+
       return array(
         'relationship' => array(
           'label' => drupal_ucfirst($info['label']),
