Galen.Ci.EntityFramework.Tests.TestUtils.GetMigrationHistory C# (CSharp) Method

GetMigrationHistory() public static method

public static GetMigrationHistory ( string serverName, string databaseName, string contextKey ) : IEnumerable
serverName string
databaseName string
contextKey string
return IEnumerable
		public static IEnumerable<string> GetMigrationHistory(string serverName, string databaseName, string contextKey)
		{
			var migrationIds = new List<string>();

			using (var conn = new SqlConnection(
				string.Format("Server={0};Initial Catalog={1};Integrated Security=true;Application Name=Galen.Ci.EntityFramework.Tests;", serverName, databaseName)))
			{
				var createdDb = conn.CreateCommand();
				createdDb.CommandText=
					string.Format("SELECT [MigrationId] FROM [dbo].[__MigrationHistory] WHERE [ContextKey] = '{0}'",
						contextKey);

				conn.Open();
				using (var reader = createdDb.ExecuteReader())
				{
					while (reader.Read())
					{
						migrationIds.Add(reader.GetString(0));
					}
				}
			}

			return migrationIds.ToArray();
		}

Usage Example

示例#1
0
        public void CorrectlyInitializesADatabaseAndDoesNotSeed()
        {
            string serverName               = @"(localdb)\mssqllocaldb";
            string databaseName             = string.Format("TestContext_{0}", Guid.NewGuid().ToString().Replace("-", string.Empty));
            var    expectedMigrationHistory = new[]
            {
                "201506161504528_InitialCreate"
            };

            var config = new DbDeploymentManagerConfiguration()
            {
                Mode = DeploymentMode.InitializeOnly,
                TargetAssemblyPath = TestUtils.BuildTestContextTestAssemblyPath(1),
                Database           = new DatabaseEndpoint {
                    ServerName = serverName, DatabaseName = databaseName
                },
                InitializationConfig = new InitializerConfigurationInfo
                {
                    Type = "Galen.Ci.EntityFramework.Initialization.CreateSecureSeededDatabaseIfNotExists`2[[Galen.Ci.EntityFramework.Tests.TestContext.Data.TestDbContext, Galen.Ci.EntityFramework.Tests.TestContext], [Galen.Ci.EntityFramework.Tests.TestContext.Data.TestDataSeeder, Galen.Ci.EntityFramework.Tests.TestContext]], Galen.Ci.EntityFramework.Initialization",
                    DisableForcedSeeding = true                     //Disable seeding
                }
            };

            try
            {
                var sut = new DbDeploymentManager(config, new AssemblyLoader(), new SqlClientDbConnectionInfoBuilder());
                sut.Deploy();

                var migrationHistory = TestUtils.GetMigrationHistory(serverName, databaseName, "Galen.Ci.EntityFramework.Tests.TestContext.Data.Migrations.Configuration");

                Assert.IsNotNull(migrationHistory);
                Assert.AreEqual(expectedMigrationHistory.Length, migrationHistory.Count());
                Assert.IsTrue(expectedMigrationHistory.SequenceEqual(migrationHistory));

                var startingRows = TestUtils.GetRows(serverName, databaseName, "dbo.BasicEntities");

                //Now that we are deployed, let's delete some data and see if the auto-seeding re-adds it
                TestUtils.ExecuteSqlCommand(serverName, databaseName, "DELETE FROM dbo.BasicEntities WHERE ID = 2");
                var postDeleteRows = TestUtils.GetRows(serverName, databaseName, "dbo.BasicEntities");

                Assert.IsTrue(postDeleteRows.Count() == (startingRows.Count() - 1));

                sut = new DbDeploymentManager(config, new AssemblyLoader(), new SqlClientDbConnectionInfoBuilder());
                sut.Deploy();

                var postSeedingRows = TestUtils.GetRows(serverName, databaseName, "dbo.BasicEntities");

                Assert.IsTrue(postSeedingRows.Count() == (startingRows.Count() - 1));

                Assert.AreEqual(1, TestUtils.GetDeploymentHistoryRowCount(serverName, databaseName, "Galen.Ci.EntityFramework.Tests.TestContext.Data.Migrations.Configuration"));
            }
            finally
            {
                //Be sure to clean up
                TestUtils.DropDatabase(config.Database.ServerName, config.Database.DatabaseName);
            }
        }
All Usage Examples Of Galen.Ci.EntityFramework.Tests.TestUtils::GetMigrationHistory