Example #1
0
        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);
        }
Example #2
0
        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);
        }