private IFileComponentGenerator _GenerateCreate(Table Table) { var t_Columns = Table.Columns.Select(KV => KV.Value); var t_ColumnsText = string.Join(",", t_Columns.Select(K => "[" + K.Name + "]")); var t_ColumnValues = string.Join(",", t_Columns.Select(K => K.Type == COLUMN_DATA_TYPE.STRING ? "'$($DTO." + K.Name + ")'" : "$($DTO." + K.Name + ")")); var t_ColumnsTextNoIdentity = string.Join(",", t_Columns.Where(C => C.Property != COLUMN_PROPERTY_TYPE.UNIQUE).Select(K => "[" + K.Name + "]"));; var t_ColumnsValuesNoIdentity = string.Join(",", t_Columns.Where(C => C.Property != COLUMN_PROPERTY_TYPE.UNIQUE).Select(K => K.Type == COLUMN_DATA_TYPE.STRING ? "'$($DTO." + K.Name + ")'" : "$($DTO." + K.Name + ")")); var t_UniqueColumn = _GetUniqueColumn(Table); // var t_InsertQuery = $"SET IDENTITY_INSERT {Table.Name} ON; INSERT INTO {Table.Name}({t_ColumnsText}) VALUES({t_ColumnValues});"; var t_InsertQuery = $"INSERT INTO {Table.Name}({t_ColumnsText}) VALUES({t_ColumnValues});"; var t_InsertIdentityQuery = $"INSERT INTO {Table.Name}({t_ColumnsTextNoIdentity}) VALUES({t_ColumnsValuesNoIdentity});"; var t_Gen = new VariableScriptBlock("_CREATE", new List <IFileComponentGenerator> { new Block(2, new List <IFileComponentGenerator> { new Statement("param($DTO)"), new Statement($"$Query = \"{t_InsertQuery}\";"), new IfDef(t_UniqueColumn != null ? $"$DTO.{t_UniqueColumn.Name} -eq {new TypeDef(t_UniqueColumn.Type).DefaultValue}" : "$false", new List <IFileComponentGenerator> { new Indent(3, new Statement($"$Query = \"{t_InsertIdentityQuery}\";")) }), new Statement($"$Cmd = [{m_SqlCommandType}]::new($Query,$this.Connection);"), new Statement("$Cmd.ExecuteNonQuery();") }) }); return(t_Gen); }
private IFileComponentGenerator _GenerateCreate(Table Table) { var t_Columns = Table.Columns.Select(KV => KV.Value); var t_ColumnsText = string.Join(",", t_Columns.Select(K => K.Name)); var t_ColumnValues = string.Join(",", t_Columns.Select(K => "'$($DTO." + K.Name + ")'")); var t_InsertQuery = $"SET IDENTITY_INSERT {Table.Name} ON; INSERT INTO {Table.Name}({t_ColumnsText}) VALUES({t_ColumnValues});"; var t_Gen = new VariableScriptBlock("_CREATE", new List <IFileComponentGenerator> { new Statement("param($DTO)"), new Statement($"$Cmd = [System.Data.SqlClient.SqlCommand]::new(\"{t_InsertQuery}\",$this.Connection);"), new Statement("$Cmd.ExecuteNonQuery();") }); return(t_Gen); }