private string getCustomQuery(SqlBuilderTask.QueryTypeEnum queryType, IPocoSqlMapping map) { string customQuery = null; var customMappings = map.GetCustomMappings(); if (customMappings != null) { switch (queryType) { case SqlBuilderTask.QueryTypeEnum.Select: customQuery = customMappings.SelectQuery; break; case SqlBuilderTask.QueryTypeEnum.Insert: customQuery = customMappings.InsertQuery; break; case SqlBuilderTask.QueryTypeEnum.Update: customQuery = customMappings.UpdateQuery; break; case SqlBuilderTask.QueryTypeEnum.Delete: customQuery = customMappings.DeleteQuery; break; } } return(customQuery); }
private void createTask(SqlBuilderTask.QueryTypeEnum queryType) { var task = new SqlBuilderTask() { QueryType = queryType }; createTask(task); }
private string getStoredProcedureName(PocoSqlStoredProcedureMap spMap, object obj, SqlBuilderTask.QueryTypeEnum queryType) { if (spMap == null) { return(String.Empty); } if (String.IsNullOrEmpty(spMap.Name)) { return(String.Format("{0}{1}_{2}", Configuration.StoredProceduresPrefix, obj.GetType().Name, queryType.ToString())); } return(spMap.Name); }
private string getQueryFields(SqlBuilderTask.QueryTypeEnum queryType, IPocoSqlMapping map) { IEnumerable <PropertyInfo> propertyInfos = _obj.GetType().GetRuntimeProperties(); string primaryKey = null; if (queryType == SqlBuilderTask.QueryTypeEnum.Update || queryType == SqlBuilderTask.QueryTypeEnum.Insert) { primaryKey = getPrimaryKey(_obj); } StringBuilder allFields = new StringBuilder(); StringBuilder insertValues = new StringBuilder(); foreach (PropertyInfo propertyInfo in propertyInfos.Where(p => p.PropertyType.FullName.StartsWith("System") && !p.PropertyType.FullName.StartsWith("System.Collections"))) // only loop on objects that are not custom class { string dbSelect = null, fieldName = null, dbColumnName = null; if (map != null) { PropertyMap propertyMap = map.GetMapping(propertyInfo.Name); if (propertyMap != null) { if (!propertyMap.Ignored) { if (!propertyMap.ColumnName.Equals(propertyInfo.Name)) { if (queryType == SqlBuilderTask.QueryTypeEnum.Select) { dbSelect = String.Format("{0} as {1}", propertyMap.ColumnName, propertyInfo.Name); } fieldName = propertyInfo.Name; dbColumnName = propertyMap.ColumnName; } } else { dbSelect = String.Empty; } } } if (String.IsNullOrEmpty(dbSelect)) { dbSelect = fieldName = dbColumnName = propertyInfo.Name; } if (fieldName == primaryKey) { if (queryType == SqlBuilderTask.QueryTypeEnum.Update) { var property = _obj.GetType().GetRuntimeProperty(dbColumnName); string val = "@" + primaryKey; if (Configuration.ValuesInQueies) { property.GetValue(_obj).ToString(); } this.Where(primaryKey + " = " + val); } if (queryType == SqlBuilderTask.QueryTypeEnum.Update || (queryType == SqlBuilderTask.QueryTypeEnum.Insert && map.GetPrimaryAutoGenerated())) { continue; } } switch (queryType) { case SqlBuilderTask.QueryTypeEnum.Select: allFields.Append((allFields.Length > 0 && !String.IsNullOrEmpty(fieldName) ? ", " : String.Empty) + dbSelect); break; case SqlBuilderTask.QueryTypeEnum.Insert: if (!String.IsNullOrEmpty(fieldName)) { string insertVal; if (Configuration.ValuesInQueies) { insertVal = getPropertyValueAsSql(_obj, fieldName); } else { insertVal = "@" + fieldName; } allFields.Append((allFields.Length > 0 ? ", " : String.Empty) + dbSelect); insertValues.Append((insertValues.Length > 0 ? ", " : String.Empty) + insertVal); } break; case SqlBuilderTask.QueryTypeEnum.Update: case SqlBuilderTask.QueryTypeEnum.StoredProcedure: string updateVal; if (Configuration.ValuesInQueies) { updateVal = getPropertyValueAsSql(_obj, fieldName, true); } else { updateVal = "@" + fieldName; } allFields.Append((allFields.Length > 0 && !String.IsNullOrEmpty(fieldName) ? ", " : String.Empty) + dbColumnName + " = " + updateVal); break; case SqlBuilderTask.QueryTypeEnum.Delete: break; } } if (queryType == SqlBuilderTask.QueryTypeEnum.Insert) { return(String.Format("({0}) values({1})", allFields, insertValues)); } else { return(allFields.ToString()); } }
private PocoSqlStoredProcedureMap getStoredProcedureMap(PocoSqlStoredProceduresMapping spMappings, SqlBuilderTask.QueryTypeEnum queryType) { switch (queryType) { case SqlBuilderTask.QueryTypeEnum.Select: return(spMappings.SelectMap); case SqlBuilderTask.QueryTypeEnum.Insert: return(spMappings.InsertMap); case SqlBuilderTask.QueryTypeEnum.Update: return(spMappings.UpdateMap); case SqlBuilderTask.QueryTypeEnum.Delete: return(spMappings.DeleteMap); default: return(null); } }