/// <summary> /// Generates the 'find by' method. /// </summary> /// <param name="file">The file.</param> /// <param name="propertyMaps">The property maps.</param> /// <param name="returnedClassMap">The returned class map.</param> public override void GenerateFindBy(StreamWriter file, IList <IPropertyMap> propertyMaps, IClassMap returnedClassMap) { ArrayList allColumns = returnedClassMap.GetTableMap().ColumnMaps; // build the 'where' statement bool first = true; StringBuilder whereQuery = new StringBuilder(16 * propertyMaps.Count); foreach (IPropertyMap propertyMap in propertyMaps) { if (!first) { whereQuery.Append(" AND "); } whereQuery .Append('`') .Append(propertyMap.GetColumnMap().Name) .Append("`='\" + m_state.EscapeString(") .Append(ClassUtility.GetParamName(propertyMap)) .Append(".ToString()) + \"'"); first = false; } string entityClassName = EntityGenerator.GetTypeName(returnedClassMap); string sqlCommand = "SELECT \" + c_rowFields + \"" + " FROM `" + returnedClassMap.GetTableMap().Name + "`" + " WHERE " + whereQuery.ToString(); // create an array and store results file.WriteLine(" "+ entityClassName + " entity;"); file.WriteLine(" List<"+ entityClassName + "> results = null;"); file.WriteLine(); file.WriteLine(" m_state.ExecuteQuery("); file.WriteLine(" \""+ sqlCommand + "\","); file.WriteLine(" CommandBehavior.Default,"); file.WriteLine(" delegate(MySqlDataReader reader)"); file.WriteLine(" {"); file.WriteLine(" results = new List<"+ entityClassName + ">(reader.FieldCount);"); file.WriteLine(" while (reader.Read())"); file.WriteLine(" {"); file.WriteLine(" entity = new "+ entityClassName + "();"); file.WriteLine(" FillEntityWithRow(ref entity, reader);"); file.WriteLine(" results.Add(entity);"); file.WriteLine(" }"); file.WriteLine(" }"); file.WriteLine(" );"); file.WriteLine(); file.WriteLine(" return results;"); }
/// <summary> /// Generates the 'count by' method. /// </summary> /// <param name="file">The file.</param> /// <param name="propertyMaps">The property maps.</param> /// <param name="returnedClassMap">The returned class map.</param> public override void GenerateCountBy(StreamWriter file, IList <IPropertyMap> propertyMaps, IClassMap returnedClassMap) { ArrayList allColumns = returnedClassMap.GetTableMap().ColumnMaps; // build the 'where' statement bool first = true; StringBuilder whereQuery = new StringBuilder(16 * propertyMaps.Count); foreach (IPropertyMap propertyMap in propertyMaps) { if (!first) { whereQuery.Append(" AND "); } whereQuery .Append('`') .Append(propertyMap.GetColumnMap().Name) .Append("`='\" + m_state.EscapeString(") .Append(ClassUtility.GetParamName(propertyMap)) .Append(".ToString()) + \"'"); first = false; } string entityClassName = EntityGenerator.GetTypeName(returnedClassMap); string sqlCommand = "SELECT count(*)" + " FROM `" + returnedClassMap.GetTableMap().Name + "`" + " WHERE " + whereQuery.ToString(); // create an array and store results file.WriteLine(); file.WriteLine(" return (long) m_state.ExecuteScalar("); file.WriteLine(" \""+ sqlCommand + "\");"); file.WriteLine(); }
/// <summary> /// Generates the 'find' method. /// </summary> /// <param name="file">The file.</param> /// <param name="classMap">The class map.</param> public override void GenerateFind(StreamWriter file, IClassMap classMap) { ArrayList primaryColumns = classMap.GetTableMap().GetPrimaryKeyColumnMaps(); StringBuilder whereQuery = new StringBuilder(); StringBuilder findParams = new StringBuilder(); bool first = true; foreach (IColumnMap primColumn in primaryColumns) { IPropertyMap propertyMap = classMap.GetPropertyMapForColumnMap(primColumn); if (!first) { whereQuery.Append(", "); findParams.Append(", "); } whereQuery .Append('`') .Append(primColumn.Name) .Append("`='\" + m_state.EscapeString(") .Append(ClassUtility.GetParamName(propertyMap)) .Append(".ToString()) + \"'"); string paramName = ClassUtility.GetParamName(propertyMap); string paramType = ClassUtility.ConvertColumnTypeToCsType(primColumn.DataType); findParams.Append(paramType + " " + paramName); first = false; } string entityClassName = EntityGenerator.GetTypeName(classMap); string sqlCommand = "SELECT \" + c_rowFields + \"" + " FROM `" + classMap.GetTableMap().Name + "`" + " WHERE " + whereQuery.ToString(); file.WriteLine(" public virtual "+ entityClassName + " Find(" + findParams.ToString() + ")"); file.WriteLine(" {"); file.WriteLine(" "+ entityClassName + " result = new " + entityClassName + "();"); file.WriteLine(" string command = \""+ sqlCommand + "\";"); file.WriteLine(); file.WriteLine(" m_state.ExecuteQuery("); file.WriteLine(" command,"); file.WriteLine(" CommandBehavior.SingleRow,"); file.WriteLine(" delegate(MySqlDataReader reader)"); file.WriteLine(" {"); file.WriteLine(" if (!reader.Read())"); file.WriteLine(" {"); file.WriteLine(" result = null;"); file.WriteLine(" }"); file.WriteLine(" else"); file.WriteLine(" {"); file.WriteLine(" FillEntityWithRow(ref result, reader);"); file.WriteLine(" }"); file.WriteLine(" }"); file.WriteLine(" );"); file.WriteLine(); file.WriteLine(" return result;"); file.WriteLine(" }"); file.WriteLine(); }