private static void writeQueryMethod( TextWriter writer, Database database, EnterpriseWebLibrary.Configuration.SystemDevelopment.Query query, EnterpriseWebLibrary.Configuration.SystemDevelopment.QueryPostSelectFromClause postSelectFromClause) { // header CodeGenerationStatics.AddSummaryDocComment(writer, "Queries the database and returns the full results collection immediately."); writer.WriteLine( "public static IEnumerable<Row> GetRows" + postSelectFromClause.name + "( " + DataAccessStatics.GetMethodParamsFromCommandText(info, query.selectFromClause + " " + postSelectFromClause.Value) + " ) {"); // body var namedParamList = DataAccessStatics.GetNamedParamList(info, query.selectFromClause + " " + postSelectFromClause.Value); var getResultSetFirstArg = namedParamList.Any() ? "new[] { " + StringTools.ConcatenateWithDelimiter(", ", namedParamList.ToArray()) + " }, " : ""; writer.WriteLine("return Cache.Current." + getQueryCacheName(query, postSelectFromClause) + ".GetResultSet( " + getResultSetFirstArg + "() => {"); writer.WriteLine("var cmd = " + DataAccessStatics.GetConnectionExpression(database) + ".DatabaseInfo.CreateCommand();"); writer.WriteLine("cmd.CommandText = selectFromClause + @\"" + postSelectFromClause.Value + "\";"); DataAccessStatics.WriteAddParamBlockFromCommandText(writer, "cmd", info, query.selectFromClause + " " + postSelectFromClause.Value, database); writer.WriteLine("var results = new List<Row>();"); writer.WriteLine( DataAccessStatics.GetConnectionExpression(database) + ".ExecuteReaderCommand( cmd, r => { while( r.Read() ) results.Add( new Row( new BasicRow( r ) ) ); } );"); // Update single-row caches. writer.WriteLine("foreach( var i in results )"); writer.WriteLine("updateSingleRowCaches( i );"); writer.WriteLine("return results;"); writer.WriteLine("} );"); writer.WriteLine("}"); }
private static string getQueryCacheType( EnterpriseWebLibrary.Configuration.SystemDevelopment.Query query, EnterpriseWebLibrary.Configuration.SystemDevelopment.QueryPostSelectFromClause postSelectFromClause) { return(DataAccessStatics.GetNamedParamList(info, query.selectFromClause + " " + postSelectFromClause.Value).Any() ? "QueryRetrievalQueryCache<Row>" : "ParameterlessQueryCache<Row>"); }
private static string getQueryCacheName( EnterpriseWebLibrary.Configuration.SystemDevelopment.Query query, EnterpriseWebLibrary.Configuration.SystemDevelopment.QueryPostSelectFromClause postSelectFromClause) { return("Rows" + postSelectFromClause.name + (DataAccessStatics.GetNamedParamList(info, query.selectFromClause + " " + postSelectFromClause.Value).Any() ? "Queries" : "Query")); }