diff --git a/.azure/pipelines/e2e-tests.yml b/.azure/pipelines/e2e-tests.yml
index fecf598d5977e1d664ba5116f28f31f6a1888b35..7f8e129b87e3b0d62424b925389f50f76a7bce68 100644
--- a/.azure/pipelines/e2e-tests.yml
+++ b/.azure/pipelines/e2e-tests.yml
@@ -1,9 +1,11 @@
 trigger: none
-phases:
-- phase: Host_Windows
-  queue:
-    name: Hosted VS2017
-    parallel: 8
+
+jobs:
+- job: Host_Windows
+  pool:
+    vmImage: vs2017-win2016
+  strategy:
+    maxParallel: 4
     matrix:
       Portable_Node8:
         Test.RuntimeIdentifier: none
@@ -36,6 +38,7 @@ phases:
       versionSpec: $(Node.Version)
   - powershell: |
       test/Cli.FunctionalTests/run-tests.ps1 -ci -ProdConManifestUrl $env:PRODCONMANIFESTURL -TestRuntimeIdentifier $(Test.RuntimeIdentifier) -AdditionalRestoreSources $env:ADDITIONALRESTORESOURCES
+
     condition: ne(variables['PB_SkipTests'], 'true')
     displayName: Run E2E tests
   - task: PublishTestResults@2
@@ -44,10 +47,11 @@ phases:
     inputs:
       testRunner: vstest
       testResultsFiles: 'artifacts/logs/**/*.trx'
-- phase: Host_macOS
-  queue:
-    name: Hosted macOS
-    parallel: 8
+- job: Host_macOS
+  pool:
+    vmImage: macOS-10.13
+  strategy:
+    maxParallel: 8
     matrix:
       Portable_Node8:
         Test.RuntimeIdentifier: none
@@ -80,6 +84,7 @@ phases:
       versionSpec: $(Node.Version)
   - powershell: |
       test/Cli.FunctionalTests/run-tests.ps1 -ci -ProdConManifestUrl $env:PRODCONMANIFESTURL -TestRuntimeIdentifier $(Test.RuntimeIdentifier) -AdditionalRestoreSources $env:ADDITIONALRESTORESOURCES
+
     condition: ne(variables['PB_SkipTests'], 'true')
     displayName: Run E2E tests
   - task: PublishTestResults@2
@@ -88,10 +93,11 @@ phases:
     inputs:
       testRunner: vstest
       testResultsFiles: 'artifacts/logs/**/*.trx'
-- phase: Host_Linux
-  queue:
-    name: Hosted Linux Preview
-    parallel: 8
+- job: Host_Linux
+  pool:
+    vmImage: ubuntu-16.04
+  strategy:
+    maxParallel: 4
     matrix:
       Portable_Node8:
         Test.RuntimeIdentifier: none
@@ -124,6 +130,7 @@ phases:
       versionSpec: $(Node.Version)
   - powershell: |
       test/Cli.FunctionalTests/run-tests.ps1 -ci -ProdConManifestUrl $env:PRODCONMANIFESTURL -TestRuntimeIdentifier $(Test.RuntimeIdentifier) -AdditionalRestoreSources $env:ADDITIONALRESTORESOURCES
+
     condition: ne(variables['PB_SkipTests'], 'true')
     displayName: Run E2E tests
   - task: PublishTestResults@2
diff --git a/.azure/pipelines/jobs/default-build.yml b/.azure/pipelines/jobs/default-build.yml
index dddaf7e51d1c897236b614646c483f56e2668ee2..799f5e9c9a2a90fad798c9a47ea2a16276bc00a5 100644
--- a/.azure/pipelines/jobs/default-build.yml
+++ b/.azure/pipelines/jobs/default-build.yml
@@ -26,9 +26,9 @@
 #   variables: { string: string }
 #     A map of custom variables
 #   matrix: { string: { string: string } }
-#     A map of matrix configurations and variables. https://docs.microsoft.com/en-us/vsts/pipelines/yaml-schema?view=vsts#matrix
+#     A map of matrix configurations and variables. https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=azure-devops&tabs=schema#job
 #   dependsOn: string | [ string ]
-#     For fan-out/fan-in. https://docs.microsoft.com/en-us/vsts/pipelines/yaml-schema?view=vsts#phase
+#     For fan-out/fan-in. https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=azure-devops&tabs=schema#job
 #   codeSign: boolean
 #       This build definition is enabled for code signing. (Only applies to Windows)
 #   buildDirectory: string
@@ -73,22 +73,16 @@ jobs:
     ${{ if ne(parameters.poolName, '') }}:
       name: ${{ parameters.poolName }}
     ${{ if and(eq(parameters.poolName, ''), eq(parameters.agentOs, 'macOS')) }}:
-      ${{ if eq(variables['System.TeamProject'], 'internal') }}:
-        name: Hosted Mac Internal
-      ${{ if ne(variables['System.TeamProject'], 'internal') }}:
-        name: Hosted macOS
       vmImage: macOS-10.13
     ${{ if and(eq(parameters.poolName, ''), eq(parameters.agentOs, 'Linux')) }}:
-      ${{ if eq(variables['System.TeamProject'], 'internal') }}:
-        name: dnceng-linux-internal-temp
-      ${{ if ne(variables['System.TeamProject'], 'internal') }}:
-        name: dnceng-linux-external-temp
-      vmImage: Linux_Ubuntu_16.04
+      vmImage: ubuntu-16.04
     ${{ if and(eq(parameters.poolName, ''), eq(parameters.agentOs, 'Windows')) }}:
-      ${{ if eq(variables['System.TeamProject'], 'internal') }}:
-        name: dotnet-internal-temp
-      ${{ if ne(variables['System.TeamProject'], 'internal') }}:
-        name: dotnet-external-temp
+      ${{ if or(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest')) }}:
+        name: NetCorePublic-Int-Pool
+        queue: BuildPool.Windows.10.Amd64.VS2017.Open
+      ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
+        name: NetCoreInternal-Int-Pool
+        queue: BuildPool.Windows.10.Amd64.VS2017
   variables:
     AgentOsName: ${{ parameters.agentOs }}
     ASPNETCORE_TEST_LOG_MAXPATH: "200" # Keep test log file name length low enough for artifact zipping
diff --git a/modules/EntityFrameworkCore b/modules/EntityFrameworkCore
index d1b10fc6ccca83e29109a0a8d9c047f2e68aede5..260b7f4fe0e8de07339448b4a2d2e5a10b577946 160000
--- a/modules/EntityFrameworkCore
+++ b/modules/EntityFrameworkCore
@@ -1 +1 @@
-Subproject commit d1b10fc6ccca83e29109a0a8d9c047f2e68aede5
+Subproject commit 260b7f4fe0e8de07339448b4a2d2e5a10b577946