diff --git b/core/modules/node/lib/Drupal/node/NodeStorageController.php a/core/modules/node/lib/Drupal/node/NodeStorageController.php
index aefc0d2..40389ae 100644
--- b/core/modules/node/lib/Drupal/node/NodeStorageController.php
+++ a/core/modules/node/lib/Drupal/node/NodeStorageController.php
@@ -119,7 +119,7 @@ protected function invokeHook($hook, EntityInterface $node) {
   protected function mapToDataStorageRecord(EntityInterface $entity, $langcode) {
     // @todo Remove this once comment is a regular entity field.
     $record = parent::mapToDataStorageRecord($entity, $langcode);
-    $record->comment = intval($record->comment);
+    $record->comment = isset($record->comment) ? intval($record->comment) : 0;
     return $record;
   }
 
diff --git b/core/modules/node/lib/Drupal/node/Tests/NodeAdminTest.php a/core/modules/node/lib/Drupal/node/Tests/NodeAdminTest.php
index bcfbfcd..8ba9e99 100644
--- b/core/modules/node/lib/Drupal/node/Tests/NodeAdminTest.php
+++ a/core/modules/node/lib/Drupal/node/Tests/NodeAdminTest.php
@@ -44,7 +44,7 @@ function testContentAdminSort() {
     }
 
     // Test that the default sort by node.changed DESC actually fires properly.
-    $nodes_query = db_select('node', 'n')
+    $nodes_query = db_select('node_property_data', 'n')
       ->fields('n', array('nid'))
       ->orderBy('changed', 'DESC')
       ->execute()
@@ -59,7 +59,7 @@ function testContentAdminSort() {
 
     // Compare the rendered HTML node list to a query for the nodes ordered by
     // title to account for possible database-dependent sort order.
-    $nodes_query = db_select('node', 'n')
+    $nodes_query = db_select('node_property_data', 'n')
       ->fields('n', array('nid'))
       ->orderBy('title')
       ->execute()
diff --git b/core/modules/node/node.admin.inc a/core/modules/node/node.admin.inc
index 139b2d2..194bf0a 100644
--- b/core/modules/node/node.admin.inc
+++ a/core/modules/node/node.admin.inc
@@ -5,7 +5,7 @@
  * Content administration and module settings user interface.
  */
 
-use Drupal\Core\Database\Query\SelectInterface;
+use Drupal\Core\Entity\Query\QueryInterface;
 
 /**
  * Page callback: Form constructor for the permission rebuild confirmation form.
@@ -131,18 +131,21 @@ function node_filters() {
  * @param Drupal\Core\Database\Query\SelectInterface $query
  *   A SelectQuery to which the filters should be applied.
  */
-function node_build_filter_query(SelectInterface $query) {
+function node_build_filter_query(QueryInterface $query) {
   // Build query
   $filter_data = isset($_SESSION['node_overview_filter']) ? $_SESSION['node_overview_filter'] : array();
   foreach ($filter_data as $index => $filter) {
     list($key, $value) = $filter;
     switch ($key) {
       case 'status':
-        // Note: no exploitable hole as $key/$value have already been checked when submitted
+        // Note: no exploitable hole as $key/$value have already been checked
+        // when submitted.
         list($key, $value) = explode('-', $value, 2);
+        $query->condition($key, $value);
+        break;
       case 'type':
       case 'langcode':
-        $query->condition('n.' . $key, $value);
+        $query->condition($key, $value);
         break;
     }
   }
@@ -460,11 +463,11 @@ function node_admin_nodes() {
   $header = array(
     'title' => array(
       'data' => t('Title'),
-      'field' => 'n.title',
+      'specifier' => 'title',
     ),
     'type' => array(
       'data' => t('Content type'),
-      'field' => 'n.type',
+      'specifier' => 'type',
       'class' => array(RESPONSIVE_PRIORITY_MEDIUM),
     ),
     'author' => array(
@@ -473,47 +476,45 @@ function node_admin_nodes() {
     ),
     'status' => array(
       'data' => t('Status'),
-      'field' => 'n.status',
+      'specifier' => 'status',
     ),
     'changed' => array(
       'data' => t('Updated'),
-      'field' => 'n.changed',
+      'specifier' => 'changed',
       'sort' => 'desc',
       'class' => array(RESPONSIVE_PRIORITY_LOW)
     ,)
   );
   if ($multilingual) {
-    $header['language_name'] = array('data' => t('Language'), 'field' => 'n.langcode', 'class' => array(RESPONSIVE_PRIORITY_LOW));
+    $header['language_name'] = array('data' => t('Language'), 'specifier' => 'langcode', 'class' => array(RESPONSIVE_PRIORITY_LOW));
   }
   $header['operations'] = array('data' => t('Operations'));
 
-  $query = db_select('node', 'n')
-    ->extend('Drupal\Core\Database\Query\PagerSelectExtender')
-    ->extend('Drupal\Core\Database\Query\TableSortExtender');
+  $query = entity_query('node')
+    ->pager(50)
+    ->tableSort($header)
+    // Provide a default sort.
+    ->sort('nid', 'desc');
   node_build_filter_query($query);
 
   if (!user_access('bypass node access')) {
     // If the user is able to view their own unpublished nodes, allow them
     // to see these in addition to published nodes. Check that they actually
     // have some unpublished nodes to view before adding the condition.
-    if (user_access('view own unpublished content') && $own_unpublished = db_query('SELECT nid FROM {node} WHERE uid = :uid AND status = :status', array(':uid' => $GLOBALS['user']->uid, ':status' => 0))->fetchCol()) {
-      $query->condition(db_or()
-        ->condition('n.status', 1)
-        ->condition('n.nid', $own_unpublished, 'IN')
+    if (user_access('view own unpublished content') && $own_unpublished = entity_query('node')->condition('uid', $GLOBALS['user']->uid)->condition('status', 0)->execute()) {
+      $query->condition(
+        $query->orConditionGroup()
+          ->condition('status', 1)
+          ->condition('nid', $own_unpublished, 'IN')
       );
     }
     else {
       // If not, restrict the query to published nodes.
-      $query->condition('n.status', 1);
+      $query->condition('status', 1);
     }
   }
-  $nids = $query
-    ->fields('n',array('nid'))
-    ->limit(50)
-    ->orderByHeader($header)
-    ->addTag('node_access')
-    ->execute()
-    ->fetchCol();
+
+  $nids = $query->execute();
   $nodes = node_load_multiple($nids);
 
   // Prepare the list of nodes.
@@ -568,7 +569,7 @@ function node_admin_nodes() {
         'query' => $destination,
       );
     }
-    if (module_invoke('translation_entity', 'enabled', 'node', $node->bundle())) {
+    if ($node->isTranslatable()) {
       $operations['translate'] = array(
         'title' => t('Translate'),
         'href' => 'node/' . $node->nid . '/translations',
diff --git b/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php a/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php
index 5cca38a..aba4967 100644
--- b/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php
+++ a/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php
@@ -274,10 +274,10 @@ protected function drupalCreateNode(array $settings = array()) {
     $node->save();
 
     // Small hack to link revisions to our test user.
-    db_update('node_revision')
-      ->fields(array('uid' => $node->uid))
-      ->condition('vid', $node->vid)
-      ->execute();
+//     db_update('node_revision')
+//       ->fields(array('uid' => $node->uid))
+//       ->condition('vid', $node->vid)
+//       ->execute();
     return $node;
   }
 
