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); }
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!"); }