diff --git a/core/modules/menu/lib/Drupal/menu/Access/DeleteLinkAccessCheck.php b/core/modules/menu/lib/Drupal/menu/Access/DeleteLinkAccessCheck.php
deleted file mode 100644
index f4438e7..0000000
--- a/core/modules/menu/lib/Drupal/menu/Access/DeleteLinkAccessCheck.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\menu\Access\DeleteLinkAccessCheck.
- */
-
-namespace Drupal\menu\Access;
-
-use Drupal\Core\Access\AccessCheckInterface;
-use Symfony\Component\Routing\Route;
-use Symfony\Component\HttpFoundation\Request;
-
-/**
- * Access check for menu link delete routes.
- */
-class DeleteLinkAccessCheck implements AccessCheckInterface {
-
-  /**
-   * {@inheritdoc}
-   */
-  public function applies(Route $route) {
-    return array_key_exists('_access_menu_delete_link', $route->getRequirements());
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function access(Route $route, Request $request) {
-    if (user_access('administer menu') && $menu_link = $request->attributes->get('menu_link')) {
-      // Links defined via hook_menu may not be deleted. Updated items are an
-      // exception, as they can be broken.
-      return $menu_link->module !== 'system' || $menu_link->updated;
-    }
-    return FALSE;
-  }
-}
diff --git a/core/modules/menu/menu.routing.yml b/core/modules/menu/menu.routing.yml
index aafe5c3..b67a709 100644
--- a/core/modules/menu/menu.routing.yml
+++ b/core/modules/menu/menu.routing.yml
@@ -17,7 +17,7 @@ menu_link_delete:
   defaults:
     _form: '\Drupal\menu\Form\MenuLinkDeleteForm'
   requirements:
-    _access_menu_delete_link: 'TRUE'
+    _entity_access: menu_link.delete
 
 menu_delete_menu:
   pattern: 'admin/structure/menu/manage/{menu}/delete'
diff --git a/core/modules/menu/menu.services.yml b/core/modules/menu/menu.services.yml
index f417d6f..2f94111 100644
--- a/core/modules/menu/menu.services.yml
+++ b/core/modules/menu/menu.services.yml
@@ -1,8 +1,4 @@
 services:
-  access_check.menu.delete_link:
-    class: Drupal\menu\Access\DeleteLinkAccessCheck
-    tags:
-      - { name: access_check }
   access_check.menu.delete_menu:
     class: Drupal\menu\Access\DeleteMenuAccessCheck
     tags:
diff --git a/core/modules/menu_link/lib/Drupal/menu_link/MenuLinkAccessController.php b/core/modules/menu_link/lib/Drupal/menu_link/MenuLinkAccessController.php
new file mode 100644
index 0000000..16d11bc
--- /dev/null
+++ b/core/modules/menu_link/lib/Drupal/menu_link/MenuLinkAccessController.php
@@ -0,0 +1,28 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\menu_link\MenuLinkAccessController.
+ */
+
+namespace Drupal\menu_link;
+
+use Drupal\Core\Entity\EntityAccessController;
+use Drupal\Core\Entity\EntityInterface;
+use Drupal\user\Plugin\Core\Entity\User;
+
+/**
+ * Defines an access controller for the menu link entity.
+ *
+ * @see \Drupal\menu_link\Plugin\Core\Entity\MenuLink
+ */
+class MenuLinkAccessController extends EntityAccessController {
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function checkAccess(EntityInterface $entity, $operation, $langcode, User $account) {
+    return user_access('administer menu', $account);
+  }
+
+}
diff --git a/core/modules/menu_link/lib/Drupal/menu_link/Plugin/Core/Entity/MenuLink.php b/core/modules/menu_link/lib/Drupal/menu_link/Plugin/Core/Entity/MenuLink.php
index 5af23d7..7e7c5cf 100644
--- a/core/modules/menu_link/lib/Drupal/menu_link/Plugin/Core/Entity/MenuLink.php
+++ b/core/modules/menu_link/lib/Drupal/menu_link/Plugin/Core/Entity/MenuLink.php
@@ -24,6 +24,7 @@
  *   module = "menu_link",
  *   controllers = {
  *     "storage" = "Drupal\menu_link\MenuLinkStorageController",
+ *     "access" = "Drupal\menu_link\MenuLinkAccessController",
  *     "render" = "Drupal\Core\Entity\EntityRenderController",
  *     "form" = {
  *       "default" = "Drupal\menu_link\MenuLinkFormController"
