Reacting to EF change

This commit is contained in:
ajcvickers 2014-11-21 10:39:50 -08:00
parent 44b50b46f9
commit 6f8407bca4
3 changed files with 17 additions and 7 deletions

View File

@ -8,10 +8,12 @@ using Microsoft.AspNet.Diagnostics.Entity.Views;
using Microsoft.AspNet.Http; using Microsoft.AspNet.Http;
using Microsoft.AspNet.RequestContainer; using Microsoft.AspNet.RequestContainer;
using Microsoft.Data.Entity; using Microsoft.Data.Entity;
using Microsoft.Data.Entity.Infrastructure;
using Microsoft.Data.Entity.Migrations; using Microsoft.Data.Entity.Migrations;
using Microsoft.Data.Entity.Migrations.Infrastructure; using Microsoft.Data.Entity.Migrations.Infrastructure;
using Microsoft.Data.Entity.Migrations.Utilities; using Microsoft.Data.Entity.Migrations.Utilities;
using Microsoft.Data.Entity.Relational; using Microsoft.Data.Entity.Relational;
using Microsoft.Data.Entity.Utilities;
using Microsoft.Framework.DependencyInjection; using Microsoft.Framework.DependencyInjection;
using Microsoft.Framework.Logging; using Microsoft.Framework.Logging;
using System; using System;
@ -81,15 +83,17 @@ namespace Microsoft.AspNet.Diagnostics.Entity
{ {
var databaseExists = dbContext.Database.AsRelational().Exists(); var databaseExists = dbContext.Database.AsRelational().Exists();
var services = (MigrationsDataStoreServices)dbContext.Configuration.DataStoreServices; var contextServices = ((IDbContextServices)dbContext).ScopedServiceProvider;
var services = (MigrationsDataStoreServices)contextServices.GetRequiredService<DbContextConfiguration>().DataStoreServices;
var migrator = services.Migrator;
var pendingMigrations = services.Migrator.GetPendingMigrations().Select(m => m.GetMigrationId()); var pendingMigrations = migrator.GetPendingMigrations().Select(m => m.GetMigrationId());
var pendingModelChanges = true; var pendingModelChanges = true;
var snapshot = services.Migrator.MigrationAssembly.Model; var snapshot = migrator.MigrationAssembly.Model;
if (snapshot != null) if (snapshot != null)
{ {
pendingModelChanges = services.Migrator.ModelDiffer.Diff(snapshot, dbContext.Model).Any(); pendingModelChanges = migrator.ModelDiffer.Diff(snapshot, dbContext.Model).Any();
} }
if ((!databaseExists && pendingMigrations.Any()) || pendingMigrations.Any() || pendingModelChanges) if ((!databaseExists && pendingMigrations.Any()) || pendingMigrations.Any() || pendingModelChanges)

View File

@ -13,7 +13,9 @@ using Microsoft.AspNet.Diagnostics.Entity.FunctionalTests.Helpers;
using Microsoft.AspNet.Http; using Microsoft.AspNet.Http;
using Microsoft.AspNet.TestHost; using Microsoft.AspNet.TestHost;
using Microsoft.Data.Entity; using Microsoft.Data.Entity;
using Microsoft.Data.Entity.Infrastructure;
using Microsoft.Data.Entity.Migrations.Infrastructure; using Microsoft.Data.Entity.Migrations.Infrastructure;
using Microsoft.Data.Entity.Utilities;
using Microsoft.Framework.DependencyInjection; using Microsoft.Framework.DependencyInjection;
using Microsoft.Framework.Logging; using Microsoft.Framework.Logging;
using Xunit; using Xunit;
@ -157,7 +159,8 @@ namespace Microsoft.AspNet.Diagnostics.Entity.Tests
{ {
using (var db = context.ApplicationServices.GetService<BloggingContextWithPendingModelChanges>()) using (var db = context.ApplicationServices.GetService<BloggingContextWithPendingModelChanges>())
{ {
var services = (MigrationsDataStoreServices)db.Configuration.DataStoreServices; var contextServices = ((IDbContextServices)db).ScopedServiceProvider;
var services = (MigrationsDataStoreServices)contextServices.GetRequiredService<DbContextConfiguration>().DataStoreServices;
services.Migrator.ApplyMigrations(); services.Migrator.ApplyMigrations();
db.Blogs.Add(new Blog()); db.Blogs.Add(new Blog());

View File

@ -11,8 +11,10 @@ using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Http; using Microsoft.AspNet.Http;
using Microsoft.AspNet.TestHost; using Microsoft.AspNet.TestHost;
using Microsoft.Data.Entity; using Microsoft.Data.Entity;
using Microsoft.Data.Entity.Infrastructure;
using Microsoft.Data.Entity.Migrations.Infrastructure; using Microsoft.Data.Entity.Migrations.Infrastructure;
using Microsoft.Data.Entity.Migrations.Utilities; using Microsoft.Data.Entity.Migrations.Utilities;
using Microsoft.Data.Entity.Utilities;
using Microsoft.Framework.DependencyInjection; using Microsoft.Framework.DependencyInjection;
using Xunit; using Xunit;
using Microsoft.AspNet.Diagnostics.Entity.Tests.Helpers; using Microsoft.AspNet.Diagnostics.Entity.Tests.Helpers;
@ -99,8 +101,9 @@ namespace Microsoft.AspNet.Diagnostics.Entity.Tests
Assert.Equal(HttpStatusCode.NoContent, response.StatusCode); Assert.Equal(HttpStatusCode.NoContent, response.StatusCode);
Assert.True(db.Database.AsRelational().Exists()); Assert.True(db.Database.AsRelational().Exists());
var services = (MigrationsDataStoreServices)db.Configuration.DataStoreServices; var contextServices = ((IDbContextServices)db).ScopedServiceProvider;
var appliedMigrations = services.Migrator.GetDatabaseMigrations(); var dataStoreServices = (MigrationsDataStoreServices)contextServices.GetRequiredService<DbContextConfiguration>().DataStoreServices;
var appliedMigrations = dataStoreServices.Migrator.GetDatabaseMigrations();
Assert.Equal(2, appliedMigrations.Count); Assert.Equal(2, appliedMigrations.Count);
Assert.Equal("111111111111111_MigrationOne", appliedMigrations.ElementAt(0).GetMigrationId()); Assert.Equal("111111111111111_MigrationOne", appliedMigrations.ElementAt(0).GetMigrationId());
Assert.Equal("222222222222222_MigrationTwo", appliedMigrations.ElementAt(1).GetMigrationId()); Assert.Equal("222222222222222_MigrationTwo", appliedMigrations.ElementAt(1).GetMigrationId());