private void BildProgress_DoWork(object sender, DoWorkEventArgs e) { try { DataAccess data = new DataAccess(Connections.Instance.DatabaseModel); foreach (string contraint in Integrity.DropRelations) { data.ExecuteNonQuery(Scripting.DropForeignKey(contraint)); } TableModel[] tablesArray = (TableModel[])e.Argument; for (int x = 0; x < tablesArray.Length; x++) { TableModel table = tablesArray[x]; this.buildWorker.ReportProgress((x + 1), $"Executing: {table.TableName}"); data.ExecuteNonQuery(Scripting.ScriptTableCreate(table)); } for (int x = 0; x < tablesArray.Length; x++) { TableModel table = tablesArray[x]; this.buildWorker.ReportProgress((x + 1), $"Relations: {table.TableName}"); string sqlQuery = Scripting.BuildForeignKey(table); if (sqlQuery.IsNullEmptyOrWhiteSpace()) { continue; } data.ExecuteNonQuery(sqlQuery); } } catch { throw; } }
private string DropFromDatabase(CompareResultModel model) { switch (model.ObjectType) { case ObjectTypeEnum.Column: return(Scripting.DropColumn(Integrity.GetTableSchema(model.TableName), model.TableName, model.ObjectName)); case ObjectTypeEnum.ForeignKeyConstraint: string constraintKey = $"{model.TableName}||{model.ObjectName}"; return(Scripting.DropForeignKey(constraintKey)); case ObjectTypeEnum.Table: return(Scripting.DropTable(model.TableObject)); } return(string.Empty); }
private string AlterDatabase(CompareResultModel model) { switch (model.ObjectType) { case ObjectTypeEnum.Column: return(Scripting.BuildColumnAlter(model.TableName, model.TableObject.Columns.First(col => col.ColumnName == model.ObjectName))); case ObjectTypeEnum.ForeignKeyConstraint: StringBuilder foreingResult = new StringBuilder(); string constraintKey = $"{model.TableName}||{model.ObjectName}"; foreingResult.AppendLine(Scripting.DropForeignKey(constraintKey)); foreingResult.AppendLine(Scripting.BuildForeignKey(model.TableObject)); return(foreingResult.ToString()); case ObjectTypeEnum.Table: StringBuilder tableResult = new StringBuilder(); tableResult.AppendLine(Scripting.ScriptTableCreate(model.TableObject)); foreach (ColumnObjectModel column in model.TableObject.Columns) { tableResult.AppendLine(Scripting.BuildeColumnCreate(Integrity.GetTableSchema(model.TableName), model.TableName, column)); tableResult.AppendLine(Scripting.BuildColumnAlter(model.TableName, column)); } return(tableResult.ToString()); } return(string.Empty); }
private void ScriptProgress_DoWork(object sender, DoWorkEventArgs e) { try { StringBuilder result = new StringBuilder(); foreach (string contraint in Integrity.DropRelations) { result.Append(Scripting.DropForeignKey(contraint)); result.AppendLine(); } TableModel[] tablesArray = (TableModel[])e.Argument; for (int x = 0; x < tablesArray.Length; x++) { TableModel table = tablesArray[x]; this.buildWorker.ReportProgress((x + 1), $"Executing: {table.TableName}"); result.AppendLine(Scripting.ScriptTableCreate(table)); result.AppendLine(); } for (int x = 0; x < tablesArray.Length; x++) { TableModel table = tablesArray[x]; this.buildWorker.ReportProgress((x + 1), $"Relations: {table.TableName}"); string sqlQuery = Scripting.BuildForeignKey(table); if (sqlQuery.IsNullEmptyOrWhiteSpace()) { continue; } result.AppendLine(sqlQuery); result.AppendLine(); } string outPath = Path.Combine(Paths.KnownFolder(KnownFolders.KnownFolder.Downloads), $"{Connections.Instance.DatabaseModel.DatabaseName}.sql"); int outIndex = 1; while (File.Exists(outPath)) { outPath = Path.Combine(Paths.KnownFolder(KnownFolders.KnownFolder.Downloads), $"{Connections.Instance.DatabaseModel.DatabaseName} ({outIndex}).sql"); ++outIndex; } File.WriteAllText(outPath, result.ToString()); Process.Start(Paths.KnownFolder(KnownFolders.KnownFolder.Downloads)); } catch { throw; } }