public object GetDeserializedValue() { string serializedValue = this.GetSerializedValue(); return(ValueTypeConverter .Deserialize(serializedValue, this.ValueType.ValueTypeID, this.ValueType.Format)); }
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)); }