Esempio n. 1
0
        public override ComplexNavigationsContext CreateContext(InMemoryTestStore _)
        {
            var context = new ComplexNavigationsContext(_options);

            context.ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.NoTracking;

            return(context);
        }
    protected override void Seed(ComplexNavigationsContext context)
    {
        base.Seed(context);

        ChangesDate = new DateTime(2010, 1, 1);

        var tableNames = new List <string>
        {
            "LevelOne",
            "LevelTwo",
            "LevelThree",
            "LevelFour"
        };

        // clean up intermittent history since in the Seed method we do fixup in multiple stages
        foreach (var tableName in tableNames)
        {
            context.Database.ExecuteSqlRaw($"ALTER TABLE [{tableName}] SET (SYSTEM_VERSIONING = OFF)");
            context.Database.ExecuteSqlRaw($"DELETE FROM [{tableName + "History"}]");
            context.Database.ExecuteSqlRaw(
                $"ALTER TABLE [{tableName}] SET (SYSTEM_VERSIONING = ON (HISTORY_TABLE = [dbo].[{tableName + "History"}]))");
        }

        foreach (var entityOne in context.ChangeTracker.Entries().Where(e => e.Entity is Level1).Select(e => e.Entity))
        {
            ((Level1)entityOne).Name = ((Level1)entityOne).Name + "Modified";
        }

        foreach (var entityOne in context.ChangeTracker.Entries().Where(e => e.Entity is Level2).Select(e => e.Entity))
        {
            ((Level2)entityOne).Name = ((Level2)entityOne).Name + "Modified";
        }

        foreach (var entityOne in context.ChangeTracker.Entries().Where(e => e.Entity is Level3).Select(e => e.Entity))
        {
            ((Level3)entityOne).Name = ((Level3)entityOne).Name + "Modified";
        }

        foreach (var entityOne in context.ChangeTracker.Entries().Where(e => e.Entity is Level4).Select(e => e.Entity))
        {
            ((Level4)entityOne).Name = ((Level4)entityOne).Name + "Modified";
        }

        context.SaveChanges();

        foreach (var tableName in tableNames)
        {
            context.Database.ExecuteSqlRaw($"ALTER TABLE [{tableName}] SET (SYSTEM_VERSIONING = OFF)");
            context.Database.ExecuteSqlRaw($"ALTER TABLE [{tableName}] DROP PERIOD FOR SYSTEM_TIME");

            context.Database.ExecuteSqlRaw($"UPDATE [{tableName + "History"}] SET PeriodStart = '2000-01-01T01:00:00.0000000Z'");
            context.Database.ExecuteSqlRaw($"UPDATE [{tableName + "History"}] SET PeriodEnd = '2020-07-01T07:00:00.0000000Z'");

            context.Database.ExecuteSqlRaw($"ALTER TABLE [{tableName}] ADD PERIOD FOR SYSTEM_TIME ([PeriodStart], [PeriodEnd])");
            context.Database.ExecuteSqlRaw(
                $"ALTER TABLE [{tableName}] SET (SYSTEM_VERSIONING = ON (HISTORY_TABLE = [dbo].[{tableName + "History"}]))");
        }
    }
Esempio n. 3
0
 public override InMemoryTestStore CreateTestStore()
 {
     return(InMemoryTestStore.GetOrCreateShared(DatabaseName, () =>
     {
         using (var context = new ComplexNavigationsContext(_options))
         {
             ComplexNavigationsModelInitializer.Seed(context);
         }
     }));
 }
Esempio n. 4
0
        public override ComplexNavigationsContext CreateContext(OracleTestStore testStore)
        {
            var context = new ComplexNavigationsContext(_options);

            context.ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.NoTracking;

            context.Database.UseTransaction(testStore.Transaction);

            return(context);
        }
Esempio n. 5
0
 public override SqliteTestStore CreateTestStore() =>
 SqliteTestStore.GetOrCreateShared(
     DatabaseName,
     () =>
 {
     using (var context = new ComplexNavigationsContext(_options))
     {
         context.Database.EnsureClean();
         ComplexNavigationsModelInitializer.Seed(context, tableSplitting: true);
     }
 });
Esempio n. 6
0
 public override OracleTestStore CreateTestStore()
 {
     return(OracleTestStore.GetOrCreateShared(DatabaseName, () =>
     {
         using (var context = new ComplexNavigationsContext(_options))
         {
             context.Database.EnsureCreated();
             ComplexNavigationsModelInitializer.Seed(context);
         }
     }));
 }
Esempio n. 7
0
        public override ComplexNavigationsContext CreateContext(SqlServerTestStore testStore)
        {
            var optionsBuilder = new EntityOptionsBuilder();

            optionsBuilder.UseSqlServer(testStore.Connection);

            var context = new ComplexNavigationsContext(_serviceProvider, optionsBuilder.Options);

            context.Database.AsRelational().Connection.UseTransaction(testStore.Transaction);
            return(context);
        }
Esempio n. 8
0
        public override ComplexNavigationsContext CreateContext(SqliteTestStore testStore)
        {
            var optionsBuilder = new DbContextOptionsBuilder();

            optionsBuilder.UseSqlite(testStore.Connection);

            var context = new ComplexNavigationsContext(_serviceProvider, optionsBuilder.Options);

            context.Database.UseTransaction(testStore.Transaction);

            return(context);
        }
Esempio n. 9
0
        public override SqlServerTestStore CreateTestStore()
        {
            return(SqlServerTestStore.GetOrCreateShared(DatabaseName, () =>
            {
                using (var context = new ComplexNavigationsContext(_options))
                {
                    context.Database.EnsureCreated();
                    ComplexNavigationsModelInitializer.Seed(context);

                    TestSqlLoggerFactory.Reset();
                }
            }));
        }
Esempio n. 10
0
        public override ComplexNavigationsContext CreateContext(NpgsqlTestStore testStore)
        {
            var optionsBuilder = new DbContextOptionsBuilder()
                                 .UseNpgsql(testStore.Connection)
                                 .UseInternalServiceProvider(_serviceProvider);

            var context = new ComplexNavigationsContext(optionsBuilder.Options);

            context.ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.NoTracking;

            context.Database.UseTransaction(testStore.Transaction);

            return(context);
        }
Esempio n. 11
0
        public override SqliteTestStore CreateTestStore() =>
        SqliteTestStore.GetOrCreateShared(
            DatabaseName,
            () =>
        {
            var optionsBuilder = new DbContextOptionsBuilder()
                                 .UseSqlite(_connectionString)
                                 .UseInternalServiceProvider(_serviceProvider);

            using (var context = new ComplexNavigationsContext(optionsBuilder.Options))
            {
                context.Database.EnsureClean();
                ComplexNavigationsModelInitializer.Seed(context);
            }
        });
Esempio n. 12
0
        public override ComplexNavigationsContext CreateContext(SqliteTestStore testStore)
        {
            var optionsBuilder = new DbContextOptionsBuilder();

            optionsBuilder.UseSqlite(testStore.Connection)
            .SuppressForeignKeyEnforcement();

            var context = new ComplexNavigationsContext(_serviceProvider, optionsBuilder.Options);

            context.ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.NoTracking;

            context.Database.UseTransaction(testStore.Transaction);

            return(context);
        }
        public override SqlServerTestStore CreateTestStore()
        {
            return(SqlServerTestStore.GetOrCreateShared(DatabaseName, () =>
            {
                var optionsBuilder = new DbContextOptionsBuilder();
                optionsBuilder.UseSqlServer(_connectionString);

                using (var context = new ComplexNavigationsContext(_serviceProvider, optionsBuilder.Options))
                {
                    // TODO: Delete DB if model changed
                    context.Database.EnsureDeleted();
                    if (context.Database.EnsureCreated())
                    {
                        ComplexNavigationsModelInitializer.Seed(context);
                    }
                }
            }));
        }
Esempio n. 14
0
        public override SqliteTestStore CreateTestStore() =>
        SqliteTestStore.GetOrCreateShared(
            DatabaseName,
            () =>
        {
            var optionsBuilder = new DbContextOptionsBuilder();
            optionsBuilder.UseSqlite(_connectionString);

            using (var context = new ComplexNavigationsContext(_serviceProvider, optionsBuilder.Options))
            {
                if (context.Database.EnsureCreated())
                {
                    ComplexNavigationsModelInitializer.Seed(context);
                }

                TestSqlLoggerFactory.SqlStatements.Clear();
            }
        });
Esempio n. 15
0
        public override NpgsqlTestStore CreateTestStore() =>
        NpgsqlTestStore.GetOrCreateShared(DatabaseName, () =>
        {
            var optionsBuilder = new DbContextOptionsBuilder()
                                 .UseNpgsql(_connectionString)
                                 .UseInternalServiceProvider(_serviceProvider);

            using (var context = new ComplexNavigationsContext(optionsBuilder.Options))
            {
                // TODO: Delete DB if model changed
                context.Database.EnsureDeleted();
                if (context.Database.EnsureCreated())
                {
                    ComplexNavigationsModelInitializer.Seed(context);
                }

                TestSqlLoggerFactory.SqlStatements.Clear();
            }
        });
Esempio n. 16
0
 protected override void Seed(ComplexNavigationsContext context)
 => ComplexNavigationsData.Seed(context, tableSplitting: true);
 protected override IQueryable <Level4> GetLevelFour(ComplexNavigationsContext context)
 => GetLevelThree(context).Select(t => t.OneToOne_Required_PK).Where(t => t != null);