private void ApplyPatch(SqlPatch patch, IObjectContextAdapter objectContextAdapter)
        {
            var reader = new StringReader(patch.Script);

            while (true)
            {
                var sql = ReadNextStatementFromStream(reader);
                if (sql == null)
                {
                    break;
                }
                try
                {
                    objectContextAdapter.ObjectContext.ExecuteStoreCommand(sql);
                }
                catch (Exception ex)
                {
                    var message = ex.Message + " " + patch.Name + " " + sql;
                    var crashEx = new Exception(message, ex);
                    crashEx.Data.Add("RepositoryInitializer.ApplyPatch." + patch.Name, sql);
                    throw crashEx;
                }
            }

            reader.Close();
        }
        private void UpdateSchema(SqlPatch patch)
        {
            var schema = new Schema();

            schema.Id           = patch.SchemaId;
            schema.Name         = patch.Name;
            schema.CreationDate = DateTime.Now;
            schema.Script       = patch.Script;

            m_SchemaSqlRepository.Insert(schema);
        }
Beispiel #3
0
        public void Ideal_Simple_Usage()
        {
            var originalSql = @"CREATE TABLE  `gameratings_db`.`testtable` (
  `id` bigint(20) DEFAULT NULL,
  `test` varchar(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;";
            var newSql      = @"CREATE TABLE  `gameratings_db`.`testtable` (
  `id` bigint(30) DEFAULT NULL,
  `test` varchar(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;";

            var upgradePath = new SqlPatch().From(originalSql).To(newSql);

            var correctPath = @"ALTER TABLE 'gameratings_db'.'testtable'
 MODIFY id   bigint(30) DEFAULT NULL";

            Assert.AreEqual(correctPath, upgradePath, "The paths differ. Almost there though!");
        }