diff --git a/aspnet/signalr/overview/testing-and-debugging/enabling-signalr-tracing/samples/sample3.xml b/aspnet/signalr/overview/testing-and-debugging/enabling-signalr-tracing/samples/sample3.xml
index 4c9a835090..a49142c27a 100644
--- a/aspnet/signalr/overview/testing-and-debugging/enabling-signalr-tracing/samples/sample3.xml
+++ b/aspnet/signalr/overview/testing-and-debugging/enabling-signalr-tracing/samples/sample3.xml
@@ -1,8 +1,8 @@
-
+
-
+
-
\ No newline at end of file
+
diff --git a/aspnetcore/data/ef-mvc/index.md b/aspnetcore/data/ef-mvc/index.md
index 7661a84082..44b4d79b81 100644
--- a/aspnetcore/data/ef-mvc/index.md
+++ b/aspnetcore/data/ef-mvc/index.md
@@ -12,9 +12,7 @@ uid: data/ef-mvc/index
---
# Getting started with ASP.NET Core MVC and Entity Framework Core using Visual Studio
-Note: A Razor Pages version of this tutorial is available [here](xref:data/ef-rp/intro). The Razor Pages version is easier to follow and covers more EF features.
-
-This series of tutorials teaches you how to create ASP.NET Core MVC web applications that use Entity Framework Core for data access. The tutorials require Visual Studio 2017.
+[!INCLUDE[RP better than MVC](../../includes/RP-EF/rp-over-mvc.md)]
1. [Getting started](intro.md)
2. [Create, Read, Update, and Delete operations](crud.md)
diff --git a/aspnetcore/data/ef-mvc/intro.md b/aspnetcore/data/ef-mvc/intro.md
index 6b9a647344..219eb557e8 100644
--- a/aspnetcore/data/ef-mvc/intro.md
+++ b/aspnetcore/data/ef-mvc/intro.md
@@ -14,7 +14,7 @@ uid: data/ef-mvc/intro
By [Tom Dykstra](https://github.com/tdykstra) and [Rick Anderson](https://twitter.com/RickAndMSFT)
-A Razor Pages version of this tutorial is available [here](xref:data/ef-rp/intro). The Razor Pages version is easier to follow and covers more EF features. We recommend you follow the [Razor Pages version of this tutorial](xref:data/ef-rp/intro).
+[!INCLUDE[RP better than MVC](../../includes/RP-EF/rp-over-mvc.md)]
The Contoso University sample web application demonstrates how to create ASP.NET Core 2.0 MVC web applications using Entity Framework (EF) Core 2.0 and Visual Studio 2017.
diff --git a/aspnetcore/data/ef-rp/concurrency.md b/aspnetcore/data/ef-rp/concurrency.md
index ff84bc79a6..6280f8163b 100644
--- a/aspnetcore/data/ef-rp/concurrency.md
+++ b/aspnetcore/data/ef-rp/concurrency.md
@@ -193,7 +193,7 @@ Update *pages\departments\edit.cshtml.cs* with the following code:
To detect a concurrency issue, the [OriginalValue](https://docs.microsoft.com/dotnet/api/microsoft.entityframeworkcore.changetracking.propertyentry.originalvalue?view=efcore-2.0#Microsoft_EntityFrameworkCore_ChangeTracking_PropertyEntry_OriginalValue) is updated with the `rowVersion` value from the entity it was fetched. EF Core generates a SQL UPDATE command with a WHERE clause containing the original `RowVersion` value. If no rows are affected by the UPDATE command (no rows have the original `RowVersion` value), a `DbUpdateConcurrencyException` exception is thrown.
-[!code-csharp[](intro/samples/cu/Pages/Departments/Edit.cshtml.cs?name=snippet_rv&highlight=24-)]
+[!code-csharp[](intro/samples/cu/Pages/Departments/Edit.cshtml.cs?name=snippet_rv&highlight=24-999)]
In the preceding code, `Department.RowVersion` is the value when the entity was fetched. `OriginalValue` is the value in the DB when `FirstOrDefaultAsync` was called in this method.
diff --git a/aspnetcore/data/ef-rp/read-related-data.md b/aspnetcore/data/ef-rp/read-related-data.md
index 803687fb23..8fff291e63 100644
--- a/aspnetcore/data/ef-rp/read-related-data.md
+++ b/aspnetcore/data/ef-rp/read-related-data.md
@@ -175,7 +175,7 @@ Run the app and navigate to the instructors page.
Replace *Pages/Instructors/Index.cshtml.cs* with the following code:
-[!code-csharp[Main](intro/samples/cu/Pages/Instructors/Index1.cshtml.cs?name=snippet_all&highlight=2,20-)]
+[!code-csharp[Main](intro/samples/cu/Pages/Instructors/Index1.cshtml.cs?name=snippet_all&highlight=2,20-99)]
The `OnGetAsync` method accepts optional route data for the ID of the selected instructor.
@@ -244,7 +244,7 @@ Click on the **Select** link. The row style changes.
Update the `OnGetAsync` method in *Pages/Instructors/Index.cshtml.cs* with the following code:
-[!code-csharp[Main](intro/samples/cu/Pages/Instructors/Index2.cshtml.cs?name=snippet_OnGetAsync&highlight=1,8,16-)]
+[!code-csharp[Main](intro/samples/cu/Pages/Instructors/Index2.cshtml.cs?name=snippet_OnGetAsync&highlight=1,8,16-999)]
Examine the updated query:
@@ -271,7 +271,7 @@ The following code populates the view model's `Enrollments` property when a cour
Add the following markup to the end of the *Pages/Courses/Index.cshtml* Razor Page:
-[!code-html[](intro/samples/cu/Pages/Instructors/IndexRRD.cshtml?range=60-102&highlight=7-)]
+[!code-html[](intro/samples/cu/Pages/Instructors/IndexRRD.cshtml?range=60-102&highlight=7-999)]
The preceding markup displays a list of courses related to an instructor when an instructor is selected.
diff --git a/aspnetcore/data/ef-rp/sort-filter-page.md b/aspnetcore/data/ef-rp/sort-filter-page.md
index ae2712b8ad..26f8a59a68 100644
--- a/aspnetcore/data/ef-rp/sort-filter-page.md
+++ b/aspnetcore/data/ef-rp/sort-filter-page.md
@@ -65,7 +65,7 @@ These two statements enable the view to set the column heading hyperlinks as fol
The method uses LINQ to Entities to specify the column to sort by. The code initializes an `IQueryable ` before the switch statement, and modifies it in the switch statement:
-[!code-csharp[Main](intro/samples/cu/Pages/Students/Index.cshtml.cs?name=snippet_SortOnly&highlight=6-)]
+[!code-csharp[Main](intro/samples/cu/Pages/Students/Index.cshtml.cs?name=snippet_SortOnly&highlight=6-999)]
When an`IQueryable` is created or modified, no query is sent to the database. The query isn't executed until the `IQueryable` object is converted into a collection. `IQueryable` are converted to a collection by calling a method such as `ToListAsync`. Therefore, the `IQueryable` code results in a single query that's not executed until the following statement:
@@ -174,7 +174,7 @@ In *Students/Index.cshtml.cs*, update the type of `Student` from `IList
Update the *Students/Index.cshtml.cs* `OnGetAsync` with the following code:
-[!code-csharp[Main](intro/samples/cu/Pages/Students/Index.cshtml.cs?name=snippet_SortFilterPage&highlight=1-4,7-14,41-)]
+[!code-csharp[Main](intro/samples/cu/Pages/Students/Index.cshtml.cs?name=snippet_SortFilterPage&highlight=1-4,7-14,41-999)]
The preceding code adds the page index, the current `sortOrder`, and the `currentFilter` to the method signature.
@@ -211,7 +211,7 @@ The two question marks in `PaginatedList.CreateAsync` represent the [null-coales
Update the markup in *Students/Index.cshtml*. The changes are highlighted:
-[!code-html[](intro/samples/cu/Pages/Students/Index.cshtml?highlight=28-31,37-40,68-)]
+[!code-html[](intro/samples/cu/Pages/Students/Index.cshtml?highlight=28-31,37-40,68-999)]
The column header links use the query string to pass the current search string to the `OnGetAsync` method so that the user can sort within filter results:
diff --git a/aspnetcore/data/ef-rp/update-related-data.md b/aspnetcore/data/ef-rp/update-related-data.md
index 0cb39a7073..a3a1753a3c 100644
--- a/aspnetcore/data/ef-rp/update-related-data.md
+++ b/aspnetcore/data/ef-rp/update-related-data.md
@@ -44,7 +44,7 @@ When a new course entity is created, it must have a relationship to an existing
Update the Create page model with the following code:
-[!code-csharp[Main](intro/samples/cu/Pages/Courses/Create.cshtml.cs?highlight=7,18,32-)]
+[!code-csharp[Main](intro/samples/cu/Pages/Courses/Create.cshtml.cs?highlight=7,18,32-999)]
The preceding code:
@@ -77,7 +77,7 @@ Test the Create page. The Create page displays the department name rather than t
Update the edit page model with the following code:
-[!code-csharp[Main](intro/samples/cu/Pages/Courses/Edit.cshtml.cs?highlight=8,28,35,36,40,47-)]
+[!code-csharp[Main](intro/samples/cu/Pages/Courses/Edit.cshtml.cs?highlight=8,28,35,36,40,47-999)]
The changes are similar to those made in the Create page model. In the preceding code, `PopulateDepartmentsDropDownList` passes in the department ID, which select the department specified in the drop-down list.
@@ -133,7 +133,7 @@ When editing an instructor record, you may want to update the instructor's offic
Update the instructors Edit page model with the following code:
-[!code-csharp[Main](intro/samples/cu/Pages/Instructors/Edit1.cshtml.cs?name=snippet&highlight=20-23,32,39-)]
+[!code-csharp[Main](intro/samples/cu/Pages/Instructors/Edit1.cshtml.cs?name=snippet&highlight=20-23,32,39-999)]
The preceding code:
@@ -180,7 +180,7 @@ The `InstructorCoursesPageModel` is the base class you will use for the Edit and
Update the instructor Edit page model with the following code:
-[!code-csharp[Main](intro/samples/cu/Pages/Instructors/Edit.cshtml.cs?name=snippet&highlight=1,20-24,30,34,41-)]
+[!code-csharp[Main](intro/samples/cu/Pages/Instructors/Edit.cshtml.cs?name=snippet&highlight=1,20-24,30,34,41-999)]
The preceding code handles office assignment changes.
@@ -218,7 +218,7 @@ Test the instructor Create page.
Update the Delete page model with the following code:
-[!code-csharp[Main](intro/samples/cu/Pages/Instructors/Delete.cshtml.cs?highlight=5,40-)]
+[!code-csharp[Main](intro/samples/cu/Pages/Instructors/Delete.cshtml.cs?highlight=5,40-999)]
The preceding code makes the following changes:
diff --git a/aspnetcore/host-and-deploy/azure-apps/troubleshoot.md b/aspnetcore/host-and-deploy/azure-apps/troubleshoot.md
index dacb80e4f4..d628683dda 100644
--- a/aspnetcore/host-and-deploy/azure-apps/troubleshoot.md
+++ b/aspnetcore/host-and-deploy/azure-apps/troubleshoot.md
@@ -22,7 +22,7 @@ This article provides instructions on how to diagnose an ASP.NET Core app startu
**502.5 Process Failure**
The worker process fails. The app doesn't start.
-The [ASP.NET Core Module](xref:fundamentals/servers/aspnet-core-module) attempts to start the worker process but it fails to start. Examining the Application Event Log often helps troubleshoot this type of problem. Accessing the log is explained in the [Event log](#event-log) section.
+The [ASP.NET Core Module](xref:fundamentals/servers/aspnet-core-module) attempts to start the worker process but it fails to start. Examining the Application Event Log often helps troubleshoot this type of problem. Accessing the log is explained in the [Application Event Log](#application-event-log) section.
The *502.5 Process Failure* error page is returned when a misconfigured app causes the worker process to fail:
diff --git a/aspnetcore/includes/RP-EF/rp-over-mvc.md b/aspnetcore/includes/RP-EF/rp-over-mvc.md
new file mode 100644
index 0000000000..22f78cb55b
--- /dev/null
+++ b/aspnetcore/includes/RP-EF/rp-over-mvc.md
@@ -0,0 +1,8 @@
+This tutorial teaches ASP.NET Core MVC and Entity Framework Core with controllers and views. Razor Pages is a new alternative in ASP.NET Core 2.0, a page-based programming model that makes building web UI easier and more productive. We recommend the [Razor Pages](xref:data/ef-rp/intro) tutorial over the MVC version. The Razor Pages tutorial:
+
+* Is easier to follow.
+* Provides more EF Core best practices.
+* Uses more efficient queries.
+* Is more current with the lastest API.
+* Covers more features.
+* Is the preferred approach for new application development.
\ No newline at end of file
diff --git a/aspnetcore/includes/RP/page1.md b/aspnetcore/includes/RP/page1.md
index 0e3cc5bc88..d4e5b99416 100644
--- a/aspnetcore/includes/RP/page1.md
+++ b/aspnetcore/includes/RP/page1.md
@@ -67,13 +67,13 @@ The `@model` directive specifies the type of the model passed to the Razor Page.
Consider the following code:
-[!code-cshtml[Main](../../tutorials/razor-pages/razor-pages-start/snapshot_sample/RazorPagesMovie/Pages/Movies/Index.cshtml?range=1-6&highlight=4-)]
+[!code-cshtml[Main](../../tutorials/razor-pages/razor-pages-start/snapshot_sample/RazorPagesMovie/Pages/Movies/Index.cshtml?range=1-6&highlight=4-999)]
The preceding highlighted code is an example of Razor transitioning into C#. The `{` and `}` characters enclose a block of C# code.
The `PageModel` base class has a `ViewData` dictionary property that can be used to add data that you want to pass to a View. You add objects into the `ViewData` dictionary using a key/value pattern. In the preceding sample, the "Title" property is added to the `ViewData` dictionary. The "Title" property is used in the *Pages/_Layout.cshtml* file. The following markup shows the first few lines of the *Pages/_Layout.cshtml* file.
-[!code-cshtml[Main](../../tutorials/razor-pages/razor-pages-start/snapshot_sample/RazorPagesMovie/Pages/NU/_Layout1.cshtml?highlight=6-)]
+[!code-cshtml[Main](../../tutorials/razor-pages/razor-pages-start/snapshot_sample/RazorPagesMovie/Pages/NU/_Layout1.cshtml?highlight=6-999)]
The line `@*Markup removed for brevity.*@` is a Razor comment. Unlike HTML comments (``), Razor comments are not sent to the client.
diff --git a/aspnetcore/includes/RP/search.md b/aspnetcore/includes/RP/search.md
index 1f235f1444..d5e1a1dcaa 100644
--- a/aspnetcore/includes/RP/search.md
+++ b/aspnetcore/includes/RP/search.md
@@ -55,7 +55,7 @@ The HTML `