Beispiel #1
0
        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);
        }