diff --git a/handlers/views_handler_field_entity.inc b/handlers/views_handler_field_entity.inc
index 7b2bf02..efbeeeb 100644
--- a/handlers/views_handler_field_entity.inc
+++ b/handlers/views_handler_field_entity.inc
@@ -2,6 +2,12 @@
 /**
  * A handler to display data from entity objects.
  *
+ * Fields based upon this handler work with all query-backends if the tables
+ * used by the query backend have an 'entity type' specified. In order to
+ * make fields based upon this handler automatically available to all compatible
+ * query backends, the views field can be defined in the table
+ * @code views_entity_{ENTITY_TYPE} @endcode.
+ *
  * @ingroup views_field_handlers
  */
 class views_handler_field_entity extends views_handler_field {
@@ -22,6 +28,17 @@ class views_handler_field_entity extends views_handler_field {
   public $base_field;
 
   /**
+   * Initialize the entity type.
+   */
+  public function init(&$view, &$options) {
+    parent::init($view, $options);
+
+    // Initialize the entity-type used.
+    $table_data = views_fetch_data($this->table);
+    $this->entity_type = $table_data['table']['entity type'];
+  }
+
+  /**
    * Overriden to add the field for the entity id.
    */
   function query() {
diff --git a/includes/cache.inc b/includes/cache.inc
index aad8784..b2fe7d8 100644
--- a/includes/cache.inc
+++ b/includes/cache.inc
@@ -32,6 +32,7 @@ function _views_fetch_data($table = NULL, $move = TRUE, $reset = FALSE) {
         $function = $module . '_views_data_alter';
         $function($cache);
       }
+      _views_data_process_entity_types($cache);
 
       views_cache_set('views_data', $cache, TRUE);
     }
@@ -63,6 +64,27 @@ function _views_fetch_data($table = NULL, $move = TRUE, $reset = FALSE) {
 }
 
 /**
+ * Links tables having an 'entity type' specified to the respective generic entity-type tables.
+ */
+function _views_data_process_entity_types(&$data) {
+  foreach ($data as $table_name => $table_info) {
+    // Add in a join from the entity-table if an entity-type is given.
+    if (!empty($table_info['table']['entity type'])) {
+      $entity_table = 'views_entity_' . $table_info['table']['entity type'];
+
+      $data[$entity_table]['table']['join'][$table_name] = array(
+        'left_table' => $table_name,
+      );
+      $data[$entity_table]['table']['entity type'] = $table_info['table']['entity type'];
+      // Copy over the default table group if we have none yet.
+      if (!empty($table_info['table']['group']) && empty($data[$entity_table]['table']['group'])) {
+        $data[$entity_table]['table']['group'] = $table_info['table']['group'];
+      }
+    }
+  }
+}
+
+/**
  * Fetch the plugin data from cache.
  */
 function _views_fetch_plugin_data($type = NULL, $plugin = NULL, $reset = FALSE) {
diff --git a/modules/node.views.inc b/modules/node.views.inc
index 777cc32..014ef87 100644
--- a/modules/node.views.inc
+++ b/modules/node.views.inc
@@ -20,7 +20,7 @@ function node_views_data() {
 
   // Define the base group of this table. Fields that don't
   // have a group defined will go into this field by default.
-  $data['node']['table']['group']  = t('Content');
+  $data['node']['table']['group'] = t('Content');
 
   // Advertise this table as a possible base table
   $data['node']['table']['base'] = array(
@@ -232,9 +232,12 @@ function node_views_data() {
     ),
   );
 
-  // links to operate on the node
+  // Define some fields based upon views_handler_field_entity in the entity
+  // table so they can be re-used with other query backends.
+  // @see views_handler_field_entity
 
-  $data['node']['view_node'] = array(
+  $data['node']['view_node']['moved to'] = array('views_entity_node', 'view_node');
+  $data['views_entity_node']['view_node'] = array(
     'field' => array(
       'title' => t('Link'),
       'help' => t('Provide a simple link to the content.'),
@@ -242,7 +245,8 @@ function node_views_data() {
     ),
   );
 
-  $data['node']['edit_node'] = array(
+  $data['node']['edit_node']['moved to'] = array('views_entity_node', 'edit_node');
+  $data['views_entity_node']['edit_node'] = array(
     'field' => array(
       'title' => t('Edit link'),
       'help' => t('Provide a simple link to edit the content.'),
@@ -250,7 +254,8 @@ function node_views_data() {
     ),
   );
 
-  $data['node']['delete_node'] = array(
+  $data['node']['delete_node']['moved to'] = array('views_entity_node', 'delete_node');
+  $data['views_entity_node']['delete_node'] = array(
     'field' => array(
       'title' => t('Delete link'),
       'help' => t('Provide a simple link to delete the content.'),
