Ejemplo n.º 1
0
        private static void writeQueryMethod(
            TextWriter writer, Database database, RedStapler.StandardLibrary.Configuration.SystemDevelopment.Query query,
            RedStapler.StandardLibrary.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, false) + ".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("}");
        }
Ejemplo n.º 2
0
 private static string getQueryCacheName(
     RedStapler.StandardLibrary.Configuration.SystemDevelopment.Query query,
     RedStapler.StandardLibrary.Configuration.SystemDevelopment.QueryPostSelectFromClause postSelectFromClause, bool getFieldName)
 {
     return((getFieldName ? "rows" : "Rows") + postSelectFromClause.name +
            (DataAccessStatics.GetNamedParamList(info, query.selectFromClause + " " + postSelectFromClause.Value).Any() ? "Queries" : "Query"));
 }
Ejemplo n.º 3
0
 private static string getQueryCacheType(
     RedStapler.StandardLibrary.Configuration.SystemDevelopment.Query query,
     RedStapler.StandardLibrary.Configuration.SystemDevelopment.QueryPostSelectFromClause postSelectFromClause)
 {
     return(DataAccessStatics.GetNamedParamList(info, query.selectFromClause + " " + postSelectFromClause.Value).Any()
                                ? "QueryRetrievalQueryCache<Row>"
                                : "ParameterlessQueryCache<Row>");
 }