public object GetDeserializedValue()
        {
            string serializedValue = this.GetSerializedValue();

            return(ValueTypeConverter
                   .Deserialize(serializedValue, this.ValueType.ValueTypeID, this.ValueType.Format));
        }
Ejemplo n.º 2
0
        public Tuple <string, Dictionary <string, object> > ConstructSql(Dictionary <int, string> parameters, Dictionary <int, bool> partsIncluded)
        {
            string baseSql = this.QueryType.Sql;
            Dictionary <string, object> sqlParams = new Dictionary <string, object>();

            foreach (var part in this.QueryTypeParts)
            {
                if (!partsIncluded.ContainsKey(part.QueryTypePartID))
                {
                    throw new FormGenerationException(string.Format(
                                                          "Query part is not included into query and not excluded.(QueryTypeID = {0}, QueryTypePartID = {1})",
                                                          part.QueryTypeID,
                                                          part.QueryTypePartID
                                                          ));
                }

                baseSql = baseSql.Replace(part.QueryTypePlaceholder, partsIncluded[part.QueryTypePartID] ? part.Sql : "");
            }

            foreach (var table in this.QueryTypeTables)
            {
                baseSql = baseSql.Replace(table.QueryTypeTable.QueryTypePlaceholder, table.Table.PhysicalTable);
            }

            foreach (var column in this.QueryTypeColumns)
            {
                baseSql = baseSql.Replace(column.QueryTypeColumn.QueryTypePlaceholder, column.Column.PhysicalColumn);
            }

            foreach (var paramIn in this.QueryTypeIns)
            {
                if (!baseSql.Contains(paramIn.QueryTypeIn.QueryTypePlaceholder))
                {
                    continue;
                }

                if (!parameters.ContainsKey(paramIn.QueryTypeIn.QueryTypeInID))
                {
                    throw new FormGenerationException(string.Format(
                                                          "Query parameter not set to a value.(QueryTypeID = {0}, QueryTypeInID = {1})",
                                                          paramIn.QueryTypeIn.QueryTypeID,
                                                          paramIn.QueryTypeIn.QueryTypeInID
                                                          ));
                }
                string sqlParamName = "@param_" + paramIn.QueryTypeIn.QueryTypeInID;
                baseSql = baseSql.Replace(paramIn.QueryTypeIn.QueryTypePlaceholder, sqlParamName);
                object sqlValue = ValueTypeConverter.Deserialize(parameters[paramIn.QueryTypeIn.QueryTypeInID],
                                                                 paramIn.ValueType.ValueTypeID, paramIn.ValueType.Format);
                sqlParams.Add(sqlParamName, sqlValue);
            }

            foreach (var paramOut in this.QueryTypeOuts)
            {
                if (string.IsNullOrEmpty(paramOut.QueryTypeOut.QueryTypePlaceholder))
                {
                    //there is no placeholder for new alias (select column AS alias...). Alias must be equal to column name
                    continue;
                }
                baseSql = baseSql.Replace(paramOut.QueryTypeOut.QueryTypePlaceholder, paramOut.QueryTypeOut.QueryTypeAlias);
            }

            return(new Tuple <string, Dictionary <string, object> >(baseSql, sqlParams));
        }