Exemple #1
0
        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("}");
        }
Exemple #2
0
        private static void writeMethod(TextWriter writer, Database database, RedStapler.StandardLibrary.Configuration.SystemDevelopment.CustomModification mod)
        {
            writer.WriteLine("public static void " + mod.name + "( " +
                             DataAccessStatics.GetMethodParamsFromCommandText(info, StringTools.ConcatenateWithDelimiter("; ", mod.commands)) + " ) {");

            writer.WriteLine(DataAccessStatics.GetConnectionExpression(database) + ".ExecuteInTransaction( delegate {");
            var cnt = 0;

            foreach (var command in mod.commands)
            {
                var commandVariableName = "cmd" + cnt++;
                writer.WriteLine("DbCommand " + commandVariableName + " = " + DataAccessStatics.GetConnectionExpression(database) + ".DatabaseInfo.CreateCommand();");
                writer.WriteLine(commandVariableName + ".CommandText = @\"" + command + "\";");
                DataAccessStatics.WriteAddParamBlockFromCommandText(writer, commandVariableName, info, command, database);
                writer.WriteLine(DataAccessStatics.GetConnectionExpression(database) + ".ExecuteNonQueryCommand( " + commandVariableName + " );");
            }
            writer.WriteLine("} );");            // execute in transaction call

            writer.WriteLine("}");               // method
        }
        private static void writeMethod(TextWriter writer, IDatabase database, CustomModification mod, int?commandTimeout)
        {
            writer.WriteLine(
                $"public static void {mod.name}( {DataAccessStatics.GetMethodParamsFromCommandText( info, StringTools.ConcatenateWithDelimiter( "; ", mod.commands ) )} ) {{");

            writer.WriteLine(DataAccessStatics.DataAccessStateCurrentDatabaseConnectionExpression + ".ExecuteInTransaction( delegate {");
            var cnt = 0;

            foreach (var command in mod.commands)
            {
                var commandVariableName = "cmd" + cnt++;
                writer.WriteLine($"{TypeNames.DbCommand} {commandVariableName} = {DataAccessStatics.DataAccessStateCurrentDatabaseConnectionCreateCommandExpression( commandTimeout )};");
                writer.WriteLine(commandVariableName + ".CommandText = @\"" + command + "\";");
                DataAccessStatics.WriteAddParamBlockFromCommandText(writer, commandVariableName, info, command, database);
                writer.WriteLine($"{DataAccessStatics.DataAccessStateCurrentDatabaseConnectionExpression}.ExecuteNonQueryCommand( {commandVariableName} );");
            }

            writer.WriteLine("} );");            // execute in transaction call

            writer.WriteLine("}");               // method
        }
Exemple #4
0
        private static void writeQueryMethod(
            TextWriter writer, IDatabase database, Query query, QueryPostSelectFromClause postSelectFromClause, int?commandTimeout)
        {
            // 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.DataAccessStateCurrentDatabaseConnectionCreateCommandExpression( commandTimeout )};");
            writer.WriteLine("cmd.CommandText = selectFromClause");
            if (!postSelectFromClause.Value.IsNullOrWhiteSpace())
            {
                writer.Write($@"+ @""{postSelectFromClause.Value}""");
            }
            writer.Write(";");
            DataAccessStatics.WriteAddParamBlockFromCommandText(writer, "cmd", info, query.selectFromClause + " " + postSelectFromClause.Value, database);
            writer.WriteLine("var results = new List<Row>();");
            writer.WriteLine(
                DataAccessStatics.DataAccessStateCurrentDatabaseConnectionExpression +
                ".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("}");
        }