Esempio n. 1
0
 private void BuildResultType()
 {
     if (!string.IsNullOrEmpty(ResolvedConnectionString) && !string.IsNullOrEmpty(ResolvedSqlStatementValue))
     {
         string    designTimeSql = SqlStringHandler.GetSqlStringHandler(ResolvedSqlStatementValue).GetExecutableDesignTimeSql();
         DataTable schema        = null;
         try
         {
             schema = DatabaseHelpers.RetrieveSchema(ConnectionType, ResolvedConnectionString, designTimeSql);
         }
         catch { }
         if (schema != null)
         {
             var resultFields            = ResultTypeValue.Fields;
             ResultTypeFields newResults = BuildResultType(schema, resultFields);
             resultFields.Clear();
             foreach (ResultTypeField nextField in newResults)
             {
                 resultFields.Add(nextField);
             }
         }
     }
     BuildDataOut();
     BuildExecutionPaths();
 }
Esempio n. 2
0
        public static ResultTypeFields BuildResultType(DataTable dataTable, ResultTypeFields reusableFields = null)
        {
            ResultTypeFields resultFields = new ResultTypeFields();

            foreach (DataColumn dataColumn in dataTable.Columns)
            {
                var oldModel = reusableFields == null ? null : reusableFields.FirstOrDefault(x => x.ColumnName == dataColumn.ColumnName);
                if (oldModel == null)
                {
                    ResultTypeField newModel = new ResultTypeField();
                    newModel.ColumnName = dataColumn.ColumnName;
                    newModel.Name       = DatabaseHelpers.GetValidName(dataColumn.ColumnName);
                    newModel.Type       = MapResultType(dataColumn.DataType);
                    resultFields.Add(newModel);
                }
                else
                {
                    resultFields.Add(oldModel);
                }
            }
            return(resultFields);
        }
Esempio n. 3
0
        /// <summary>
        /// Create the template output
        /// </summary>
        public virtual string TransformText()
        {
            this.Write("\r\n");
            this.Write("\r\nvar OutputNames = ");

            #line 23 "D:\Hg\Linx5 Components\Database\Code\Database\ExecuteSQL\ExecuteSQL_Gen.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(CSharpUtilities.ArrayAsString(ResultTypeFields.Select(x => x.Name))));

            #line default
            #line hidden
            this.Write(";\r\nvar ColumnNames = ");

            #line 24 "D:\Hg\Linx5 Components\Database\Code\Database\ExecuteSQL\ExecuteSQL_Gen.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(CSharpUtilities.ArrayAsString(ResultTypeFields.Select(x => x.ColumnName))));

            #line default
            #line hidden
            this.Write(";\r\nvar SqlIdentifiers = ");

            #line 25 "D:\Hg\Linx5 Components\Database\Code\Database\ExecuteSQL\ExecuteSQL_Gen.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(SqlIdentifiers));

            #line default
            #line hidden
            this.Write(";\r\nvar SqlValues = ");

            #line 26 "D:\Hg\Linx5 Components\Database\Code\Database\ExecuteSQL\ExecuteSQL_Gen.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(SqlValues));

            #line default
            #line hidden
            this.Write(";\r\n\r\nvar executeSqlX = new Twenty57.Linx.Components.Database.ExecuteSQL.ExecuteSQ" +
                       "LX(\r\n");

            #line 29 "D:\Hg\Linx5 Components\Database\Code\Database\ExecuteSQL\ExecuteSQL_Gen.tt"
            if (UseTransaction)
            {
            #line default
            #line hidden

            #line 30 "D:\Hg\Linx5 Components\Database\Code\Database\ExecuteSQL\ExecuteSQL_Gen.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(TransactionProperty));

            #line default
            #line hidden
                this.Write(".GetConnectionType(), ");

            #line 30 "D:\Hg\Linx5 Components\Database\Code\Database\ExecuteSQL\ExecuteSQL_Gen.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(TransactionProperty));

            #line default
            #line hidden
                this.Write(".GetDbTransaction(), \r\n");

            #line 31 "D:\Hg\Linx5 Components\Database\Code\Database\ExecuteSQL\ExecuteSQL_Gen.tt"
            }
            else
            {
            #line default
            #line hidden

            #line 32 "D:\Hg\Linx5 Components\Database\Code\Database\ExecuteSQL\ExecuteSQL_Gen.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(CSharpUtilities.EnumAsString(ConnectionType)));

            #line default
            #line hidden
                this.Write(", ");

            #line 32 "D:\Hg\Linx5 Components\Database\Code\Database\ExecuteSQL\ExecuteSQL_Gen.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(ConnectionStringProperty));

            #line default
            #line hidden
                this.Write(", \r\n");

            #line 33 "D:\Hg\Linx5 Components\Database\Code\Database\ExecuteSQL\ExecuteSQL_Gen.tt"
            }

            #line default
            #line hidden

            #line 34 "D:\Hg\Linx5 Components\Database\Code\Database\ExecuteSQL\ExecuteSQL_Gen.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(Timeout));

            #line default
            #line hidden
            this.Write(", OutputNames, ColumnNames, ");

            #line 34 "D:\Hg\Linx5 Components\Database\Code\Database\ExecuteSQL\ExecuteSQL_Gen.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(Sql));

            #line default
            #line hidden
            this.Write(", SqlIdentifiers, SqlValues);\r\nexecuteSqlX.LogEvent += message => ");

            #line 35 "D:\Hg\Linx5 Components\Database\Code\Database\ExecuteSQL\ExecuteSQL_Gen.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(FunctionContextProperty));

            #line default
            #line hidden
            this.Write(".Log(message);\r\n\r\n");

            #line 37 "D:\Hg\Linx5 Components\Database\Code\Database\ExecuteSQL\ExecuteSQL_Gen.tt"
            if (RowType != null)
            {
            #line default
            #line hidden
                this.Write("\r\nvar rowBuilder = new System.Func<");

            #line 39 "D:\Hg\Linx5 Components\Database\Code\Database\ExecuteSQL\ExecuteSQL_Gen.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(RowTypeName));

            #line default
            #line hidden
                this.Write(">(() => {\r\n\t");

            #line 40 "D:\Hg\Linx5 Components\Database\Code\Database\ExecuteSQL\ExecuteSQL_Gen.tt"
                var rowFields       = ResultTypeFields.Where(f => !string.IsNullOrEmpty(f.Name));
                var logFormatString = "Retrieved ";
                int index           = 0;
                foreach (var nextField in rowFields)
                {
                    logFormatString += string.Format("{0} = {{{1}}}, ", nextField.ColumnName, index++);
                }


            #line default
            #line hidden
                this.Write("\t");

            #line 46 "D:\Hg\Linx5 Components\Database\Code\Database\ExecuteSQL\ExecuteSQL_Gen.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(FunctionContextProperty));

            #line default
            #line hidden
                this.Write(".Log(System.String.Format(");

            #line 46 "D:\Hg\Linx5 Components\Database\Code\Database\ExecuteSQL\ExecuteSQL_Gen.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(CSharpUtilities.ToVerbatimString(logFormatString.TrimEnd(',', ' '))));

            #line default
            #line hidden
                this.Write("\r\n\t");

            #line 47 "D:\Hg\Linx5 Components\Database\Code\Database\ExecuteSQL\ExecuteSQL_Gen.tt"
                foreach (var nextField in rowFields)
                {
            #line default
            #line hidden
                    this.Write("\t\t, Twenty57.Linx.Components.Database.Common.LogHelpers.GetDisplayString(executeS" +
                               "qlX.Reader[");

            #line 48 "D:\Hg\Linx5 Components\Database\Code\Database\ExecuteSQL\ExecuteSQL_Gen.tt"
                    this.Write(this.ToStringHelper.ToStringWithCulture(CSharpUtilities.ToVerbatimString(nextField.ColumnName)));

            #line default
            #line hidden
                    this.Write("])\r\n\t");

            #line 49 "D:\Hg\Linx5 Components\Database\Code\Database\ExecuteSQL\ExecuteSQL_Gen.tt"
                }

            #line default
            #line hidden
                this.Write("\t));\r\n\r\n\treturn new ");

            #line 52 "D:\Hg\Linx5 Components\Database\Code\Database\ExecuteSQL\ExecuteSQL_Gen.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(RowTypeName));

            #line default
            #line hidden
                this.Write("\r\n\t{\r\n\t\t");

            #line 54 "D:\Hg\Linx5 Components\Database\Code\Database\ExecuteSQL\ExecuteSQL_Gen.tt"
                foreach (var nextField in rowFields)
                {
            #line default
            #line hidden
                    this.Write("\t\t\t");

            #line 55 "D:\Hg\Linx5 Components\Database\Code\Database\ExecuteSQL\ExecuteSQL_Gen.tt"
                    this.Write(this.ToStringHelper.ToStringWithCulture(GetParamName(nextField.Name)));

            #line default
            #line hidden
                    this.Write(" = Twenty57.Linx.Components.Database.ExecuteSQL.DatabaseHelpers.CheckDbValue<");

            #line 55 "D:\Hg\Linx5 Components\Database\Code\Database\ExecuteSQL\ExecuteSQL_Gen.tt"
                    this.Write(this.ToStringHelper.ToStringWithCulture(Twenty57.Linx.Components.Database.Common.TypeHelpers.GetCodeStringForType(nextField.TypeReference)));

            #line default
            #line hidden
                    this.Write(">(executeSqlX.Reader[");

            #line 55 "D:\Hg\Linx5 Components\Database\Code\Database\ExecuteSQL\ExecuteSQL_Gen.tt"
                    this.Write(this.ToStringHelper.ToStringWithCulture(CSharpUtilities.ToVerbatimString(nextField.ColumnName)));

            #line default
            #line hidden
                    this.Write("]), \r\n\t\t");

            #line 56 "D:\Hg\Linx5 Components\Database\Code\Database\ExecuteSQL\ExecuteSQL_Gen.tt"
                }

            #line default
            #line hidden
                this.Write("\t};\r\n});\r\n\r\n");

            #line 60 "D:\Hg\Linx5 Components\Database\Code\Database\ExecuteSQL\ExecuteSQL_Gen.tt"
                if (ReturnMode == ExecuteSQLShared.ReturnModeType.ListOfRows)
                {
            #line default
            #line hidden
                    this.Write("try\r\n{\r\n\texecuteSqlX.OpenReader();\r\n\r\n\tvar table = new List<");

            #line 65 "D:\Hg\Linx5 Components\Database\Code\Database\ExecuteSQL\ExecuteSQL_Gen.tt"
                    this.Write(this.ToStringHelper.ToStringWithCulture(RowTypeName));

            #line default
            #line hidden
                    this.Write(">();\r\n\twhile (executeSqlX.Reader.Read())\r\n\t\ttable.Add(rowBuilder());\r\n\treturn tab" +
                               "le;\r\n}\r\nfinally\r\n{\r\n\texecuteSqlX.Dispose();\r\n}\r\n");

            #line 74 "D:\Hg\Linx5 Components\Database\Code\Database\ExecuteSQL\ExecuteSQL_Gen.tt"
                }
                else if ((ReturnMode == ExecuteSQLShared.ReturnModeType.FirstRow) || (ReturnMode == ExecuteSQLShared.ReturnModeType.FirstRowElseEmptyRow))
                {
            #line default
            #line hidden
                    this.Write("try\r\n{\r\n\texecuteSqlX.OpenReader();\r\n\r\n\t");

            #line 79 "D:\Hg\Linx5 Components\Database\Code\Database\ExecuteSQL\ExecuteSQL_Gen.tt"
                    this.Write(this.ToStringHelper.ToStringWithCulture(RowTypeName));

            #line default
            #line hidden
                    this.Write(" row;\r\n\tif (executeSqlX.Reader.Read())\r\n\t\trow = rowBuilder();\r\n\telse\r\n\t{\r\n\t\t");

            #line 84 "D:\Hg\Linx5 Components\Database\Code\Database\ExecuteSQL\ExecuteSQL_Gen.tt"
                    if (ReturnMode == ExecuteSQLShared.ReturnModeType.FirstRow)
                    {
            #line default
            #line hidden
                        this.Write("\t\tthrow new Exception(\"No rows returned by query.\");\r\n\t\t");

            #line 86 "D:\Hg\Linx5 Components\Database\Code\Database\ExecuteSQL\ExecuteSQL_Gen.tt"
                    }
                    else
                    {
            #line default
            #line hidden
                        this.Write("\t\trow = new ");

            #line 87 "D:\Hg\Linx5 Components\Database\Code\Database\ExecuteSQL\ExecuteSQL_Gen.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(RowTypeName));

            #line default
            #line hidden
                        this.Write("();\r\n\t\t");

            #line 88 "D:\Hg\Linx5 Components\Database\Code\Database\ExecuteSQL\ExecuteSQL_Gen.tt"
                    }

            #line default
            #line hidden
                    this.Write("\t}\r\n\r\n\treturn row;\r\n}\r\nfinally\r\n{\r\n\texecuteSqlX.Dispose();\r\n}\r\n");

            #line 97 "D:\Hg\Linx5 Components\Database\Code\Database\ExecuteSQL\ExecuteSQL_Gen.tt"
                }
                else
                {
            #line default
            #line hidden
                    this.Write("executeSqlX.OpenReader();\r\n");

            #line 99 "D:\Hg\Linx5 Components\Database\Code\Database\ExecuteSQL\ExecuteSQL_Gen.tt"
                    this.Write(this.ToStringHelper.ToStringWithCulture(ExecutionPathOutputName));

            #line default
            #line hidden
                    this.Write(" = \r\nexecuteSqlX.Rows<Twenty57.Linx.Plugin.Common.CodeGeneration.NextResult>(read" +
                               "er => {\r\n\tvar row = rowBuilder();\r\n\treturn new Twenty57.Linx.Plugin.Common.CodeG" +
                               "eneration.NextResult(\"");

            #line 102 "D:\Hg\Linx5 Components\Database\Code\Database\ExecuteSQL\ExecuteSQL_Gen.tt"
                    this.Write(this.ToStringHelper.ToStringWithCulture(ExecutionPathName));

            #line default
            #line hidden
                    this.Write("\", row);\r\n});\r\n");

            #line 104 "D:\Hg\Linx5 Components\Database\Code\Database\ExecuteSQL\ExecuteSQL_Gen.tt"
                }

            #line default
            #line hidden

            #line 105 "D:\Hg\Linx5 Components\Database\Code\Database\ExecuteSQL\ExecuteSQL_Gen.tt"
            }
            else
            {
            #line default
            #line hidden
                this.Write("try\r\n{\r\n\texecuteSqlX.OpenReader();\r\n}\r\nfinally\r\n{\r\n\texecuteSqlX.Dispose();\r\n}\r\n");

            #line 114 "D:\Hg\Linx5 Components\Database\Code\Database\ExecuteSQL\ExecuteSQL_Gen.tt"
            }

            #line default
            #line hidden
            return(this.GenerationEnvironment.ToString());
        }
Esempio n. 4
0
 public ResultType()
 {
     Fields = new ResultTypeFields();
 }