public void TestNoDbMigrationNeeded() { using var dbContext = new MemCheckDbContext(new DbContextOptionsBuilder <MemCheckDbContext>().UseSqlServer(@"Server=none;Database=none;Trusted_Connection=True;").Options); var relationalDependencies = dbContext.GetService <RelationalConventionSetBuilderDependencies>(); var relationalModelConvention = new RelationalModelConvention(dbContext.GetService <ProviderConventionSetBuilderDependencies>(), relationalDependencies); var modelSnapshot = (IConventionModel)dbContext.GetService <IMigrationsAssembly>().ModelSnapshot.Model; var finalizedSnapshotModel = relationalModelConvention.ProcessModelFinalized(modelSnapshot).GetRelationalModel(); var possiblyModifiedModel = dbContext.Model.GetRelationalModel(); var changes = dbContext.GetService <IMigrationsModelDiffer>().GetDifferences(finalizedSnapshotModel, possiblyModifiedModel); Assert.AreEqual(0, changes.Count, "A DB model update is needed - Run dotnet ef migrations add - " + string.Join(',', changes.Select(change => change.ToString()))); }
private static IMigrationsAssembly GetMigrationsAssembly() { using var dbContext = new MemCheckDbContext(new DbContextOptionsBuilder <MemCheckDbContext>().UseSqlServer(@"Server=none;Database=none;Trusted_Connection=True;").Options); IMigrationsAssembly?result = dbContext.GetService <IMigrationsAssembly>(); Assert.IsNotNull(result); return(result); }
private static IRelationalModel GetModelFromMigrations() { var migrationsAssembly = GetMigrationsAssembly(); IModel migrationsAssemblyModel = migrationsAssembly.ModelSnapshot?.Model !; if (migrationsAssemblyModel is IMutableModel mutableModel) { migrationsAssemblyModel = mutableModel.FinalizeModel(); } using var dbContext = new MemCheckDbContext(new DbContextOptionsBuilder <MemCheckDbContext>().UseSqlServer(@"Server=none;Database=none;Trusted_Connection=True;").Options); migrationsAssemblyModel = dbContext.GetService <IModelRuntimeInitializer>().Initialize(migrationsAssemblyModel); var result = migrationsAssemblyModel.GetRelationalModel(); return(result); }