public CSeedScript Convert(KTable kTable) { var seedScript = new CSeedScript(); var codeWriter = new CodeWriter(); if (kTable.GeneratedTable.Row.Count == 0) { codeWriter.WriteLine($"-- Sample data has not been supplied for {kTable.GeneratedTable.TableName} "); } var firstRow = true; foreach (var row in kTable.GeneratedTable.Row) { if (!firstRow) { codeWriter.WriteLine("UNION ALL"); } codeWriter.Write("INSERT INTO ("); var firstColumnHeader = true; foreach (var column in kTable.GeneratedTable.Column) { if (!firstColumnHeader) { codeWriter.Write(", "); } codeWriter.Write($"[{column.ColumnName}]"); firstColumnHeader = false; } codeWriter.Write(") VALUES ("); var firstColumnValue = true; foreach (var column in kTable.GeneratedTable.Column) { if (!firstColumnValue) { codeWriter.Write(", "); } var data = row.RowData.FirstOrDefault(rd => rd.Column.ColumnName == column.ColumnName); if (data != null) { codeWriter.Write($"{data}"); } else { codeWriter.Write("NULL"); } firstColumnValue = false; } codeWriter.WriteLine(")"); firstRow = false; } seedScript.SeedScriptBody = codeWriter.ToString(); return(seedScript); }
public CSeedScript Convert(CTable table) { var seedScript = new CSeedScript { SeedScriptName = $"Seed{table.TableName}" }; var stringBuilder = new StringBuilder(); foreach (var row in table.Row) { stringBuilder.AppendLine( $"EXEC [{table.InsertStoredProcedure.Schema.SchemaName}].[{table.InsertStoredProcedure.StoredProcedureName}]"); var first = true; foreach (var rowData in row.RowData) { // if (rowData.Column.IsIdentity) // continue; if (!first) { stringBuilder.Append(", "); } var parameter = table.InsertStoredProcedure.Parameter.FirstOrDefault(p => p.SourceColumn.ColumnName == rowData.Column.ColumnName); var value = "NULL"; if (rowData.Column.ColumnType == DbType.String || rowData.Column.ColumnType == DbType.StringFixedLength || rowData.Column.ColumnType == DbType.AnsiString || rowData.Column.ColumnType == DbType.AnsiStringFixedLength) { value = $"'{rowData.Value}'"; } else { value = $"{rowData.Value}"; } stringBuilder.Append($"@{parameter.ParameterName} = {value}"); first = false; } stringBuilder.AppendLine(); stringBuilder.AppendLine(); stringBuilder.AppendLine("GO"); stringBuilder.AppendLine(); } seedScript.SeedScriptBody = stringBuilder.ToString(); return(seedScript); }
private void AddSeedScripts(CProject dataProject, List <CTable> tables) { var executeScripts = new CodeWriter(); foreach (var table in tables) { if (table.Row.Count == 0) { continue; //no data to seed } var converter = new CTableToSSeedScriptConverter(); var seedScript = converter.Convert(table); dataProject.ProjectContent.Add(new CProjectContent { Content = seedScript, BuildAction = CBuildAction.None, File = new CFile { Folder = $@"Scripts\Post Deployment\Seed", FileName = $"{seedScript.SeedScriptName}.sql" } }); executeScripts.WriteLine($@":r .\Seed\{seedScript.SeedScriptName}.sql"); } //add script to execute them var executeSeedScript = new CSeedScript { SeedScriptBody = executeScripts.ToString(), SeedScriptName = "Script.PostDeployment" }; dataProject.ProjectContent.Add(new CProjectContent { Content = executeSeedScript, BuildAction = CBuildAction.PostDeploy, File = new CFile { Folder = $@"Scripts\Post Deployment\", FileName = $"{executeSeedScript.SeedScriptName}.sql" } }); }