Пример #1
0
    void IResultWriter.AfterCloseReader(int affectedRows)
    {
        var duration      = Stopwatch.GetTimestamp() - _beforeExecuteReaderTimestamp;
        var header        = StopwatchTimeSpan.ToString(duration, 3);
        var stringBuilder = new StringBuilder();

        stringBuilder.Append($"Command[{_commandCount - 1}] completed.");
        if (affectedRows >= 0)
        {
            stringBuilder.Append($" {affectedRows} row(s) affected.");
        }
        var message = stringBuilder.ToString();

        _addInfoMessage(InfoMessageFactory.Create(InfoMessageSeverity.Verbose, header, message));

        if (_query != null)
        {
            var directory = _fileName != null?Path.GetDirectoryName(_fileName) : Path.GetTempPath();

            var results = _query.Results.EmptyIfNull().Zip(_results, ToResult).ToReadOnlyCollection();
            var query   = new DbRequest(directory, _query.Name, _query.Using, _query.Namespace, _commandText, 0, _parameters, results);

            var queryBuilder     = new DbRequestBuilder(query);
            var csharpSourceCode = queryBuilder.Build();

            var path = Path.Combine(query.Directory, $"{query.Name}.generated.cs");
            File.WriteAllText(path, csharpSourceCode, Encoding.UTF8);

            _query       = null;
            _parameters  = null;
            _commandText = null;
            _results     = null;
        }
    }
Пример #2
0
    void IResultWriter.BeforeExecuteReader(AsyncDataAdapterCommand asyncDataAdapterCommand)
    {
        _beforeExecuteReaderTimestamp = Stopwatch.GetTimestamp();
        ++_commandCount;

        var command    = asyncDataAdapterCommand.Command;
        var message    = $"Command[{_commandCount - 1}] executing from line {asyncDataAdapterCommand.LineIndex + 1}...\r\n{command.CommandText}";
        var parameters = command.Parameters;

        if (!parameters.IsNullOrEmpty())
        {
            message += "\r\n" + command.Parameters.ToLogString();
        }

        _addInfoMessage(InfoMessageFactory.Create(InfoMessageSeverity.Verbose, null, message));

        _query = asyncDataAdapterCommand.Query;
        if (_query != null)
        {
            _fileName    = asyncDataAdapterCommand.FileName;
            _parameters  = asyncDataAdapterCommand.Parameters;
            _commandText = asyncDataAdapterCommand.CommandText;
            _results     = new List <Result>();
        }
    }
Пример #3
0
 public AsyncDataAdapterCommand(string fileName, int lineIndex, IDbCommand command, Api.QueryConfiguration.Query query,
                                ReadOnlyCollection <DbRequestParameter> parameters, string commandText)
 {
     FileName    = fileName;
     LineIndex   = lineIndex;
     Command     = command;
     Query       = query;
     Parameters  = parameters;
     CommandText = commandText;
 }