Пример #1
0
        /// <summary>
        /// Records the SQL information on the current subsegment,
        /// </summary>
        protected virtual void CollectSqlInformation(CommandEventData eventData)
        {
            // Get database type from DbContext
            string databaseType = EFUtil.GetDataBaseType(eventData.Context);

            _recorder.AddSqlInformation("database_type", databaseType);

            _recorder.AddSqlInformation("database_version", eventData.Command.Connection.ServerVersion);

            DbConnectionStringBuilder connectionStringBuilder = new DbConnectionStringBuilder
            {
                ConnectionString = eventData.Command.Connection.ConnectionString
            };

            // Remove sensitive information from connection string
            connectionStringBuilder.Remove("Password");

            // Do a pre-check for UserID since in the case of TrustedConnection, a UserID may not be available.
            var user_id = EFUtil.GetUserId(connectionStringBuilder);

            if (user_id != null)
            {
                _recorder.AddSqlInformation("user", user_id.ToString());
            }

            _recorder.AddSqlInformation("connection_string", connectionStringBuilder.ToString());

            if (ShouldCollectSqlText())
            {
                _recorder.AddSqlInformation("sanitized_query", eventData.Command.CommandText);
            }
        }
 private void OnCommandStop(Exception exception)
 {
     if (exception != null)
     {
         EFUtil.ProcessCommandError(exception);
     }
     else
     {
         EFUtil.ProcessEndCommand();
     }
 }
Пример #3
0
 /// <summary>
 /// Trace after command fails.
 /// </summary>
 /// <param name="command">Instance of <see cref="DbCommand"/>.</param>
 /// <param name="eventData">Instance of <see cref="CommandErrorEventData"/>.</param>
 public override void CommandFailed(DbCommand command, CommandErrorEventData eventData)
 {
     EFUtil.ProcessCommandError(eventData.Exception);
     base.CommandFailed(command, eventData);
 }
Пример #4
0
 /// <summary>
 /// Trace after executing reader asynchronously.
 /// </summary>
 /// <param name="command">Instance of <see cref="DbCommand"/>.</param>
 /// <param name="eventData">Instance of <see cref="CommandExecutedEventData"/>.</param>
 /// <param name="result">Result from <see cref="DbDataReader"/>.</param>
 /// <param name="cancellationToken">Instance of <see cref="CancellationToken"/>.</param>
 /// <returns>Task representing the async operation.</returns>
 public override Task <DbDataReader> ReaderExecutedAsync(DbCommand command, CommandExecutedEventData eventData, DbDataReader result, CancellationToken cancellationToken = default)
 {
     EFUtil.ProcessEndCommand();
     return(base.ReaderExecutedAsync(command, eventData, result, cancellationToken));
 }
Пример #5
0
 /// <summary>
 /// Trace before executing reader asynchronously.
 /// </summary>
 /// <param name="command">Instance of <see cref="DbCommand"/>.</param>
 /// <param name="eventData">Instance of <see cref="CommandEventData"/>.</param>
 /// <param name="result">Result from <see cref="IInterceptor"/>.</param>
 /// <param name="cancellationToken">Instance of <see cref="CancellationToken"/>.</param>
 /// <returns>Task representing the async operation.</returns>
 public override Task <InterceptionResult <DbDataReader> > ReaderExecutingAsync(DbCommand command, CommandEventData eventData, InterceptionResult <DbDataReader> result, CancellationToken cancellationToken = default)
 {
     EFUtil.ProcessBeginCommand(command, _collectSqlQueriesOverride);
     return(base.ReaderExecutingAsync(command, eventData, result, cancellationToken));
 }
Пример #6
0
 /// <summary>
 /// Trace after executing reader.
 /// </summary>
 /// <param name="command">Instance of <see cref="DbCommand"/>.</param>
 /// <param name="eventData">Instance of <see cref="CommandExecutedEventData"/>.</param>
 /// <param name="result">Instance of <see cref="DbDataReader"/>.</param>
 /// <returns>Instance of <see cref="DbDataReader"/>.</returns>
 public override DbDataReader ReaderExecuted(DbCommand command, CommandExecutedEventData eventData, DbDataReader result)
 {
     EFUtil.ProcessEndCommand();
     return(base.ReaderExecuted(command, eventData, result));
 }
Пример #7
0
 /// <summary>
 /// Trace before executing reader.
 /// </summary>
 /// <param name="command">Instance of <see cref="DbCommand"/>.</param>
 /// <param name="eventData">Instance of <see cref="CommandEventData"/>.</param>
 /// <param name="result">Result from <see cref="IInterceptor"/>.</param>
 /// <returns>Result from <see cref="IInterceptor"/>.</returns>
 public override InterceptionResult <DbDataReader> ReaderExecuting(DbCommand command, CommandEventData eventData, InterceptionResult <DbDataReader> result)
 {
     EFUtil.ProcessBeginCommand(command, _collectSqlQueriesOverride);
     return(base.ReaderExecuting(command, eventData, result));
 }
Пример #8
0
 /// <summary>
 /// Trace after executing scalar asynchronously.
 /// </summary>
 /// <param name="command">Instance of <see cref="DbCommand"/>.</param>
 /// <param name="eventData">Instance of <see cref="CommandExecutedEventData"/>.</param>
 /// <param name="result">Result object.</param>
 /// <param name="cancellationToken">Instance of <see cref="CancellationToken"/>.</param>
 /// <returns>Task representing the async operation.</returns>
 public override Task <object> ScalarExecutedAsync(DbCommand command, CommandExecutedEventData eventData, object result, CancellationToken cancellationToken = default)
 {
     EFUtil.ProcessEndCommand();
     return(base.ScalarExecutedAsync(command, eventData, result, cancellationToken));
 }
Пример #9
0
 /// <summary>
 /// Trace after executing scalar.
 /// </summary>
 /// <param name="command">Instance of <see cref="DbCommand"/>.</param>
 /// <param name="eventData">Instance of <see cref="CommandExecutedEventData"/>.</param>
 /// <param name="result">Result object.</param>
 /// <returns>Result object.</returns>
 public override object ScalarExecuted(DbCommand command, CommandExecutedEventData eventData, object result)
 {
     EFUtil.ProcessEndCommand();
     return(base.ScalarExecuted(command, eventData, result));
 }
Пример #10
0
 /// <summary>
 /// Trace after executing asynchronously.
 /// </summary>
 /// <param name="command">Instance of <see cref="DbCommand"/>.</param>
 /// <param name="eventData">Instance of <see cref="CommandExecutedEventData"/>.</param>
 /// <param name="result">Result as integer.</param>
 /// <param name="cancellationToken">Instance of <see cref="CancellationToken"/>.</param>
 /// <returns>Task representing the async operation.</returns>
 public override Task <int> NonQueryExecutedAsync(DbCommand command, CommandExecutedEventData eventData, int result, CancellationToken cancellationToken = default)
 {
     EFUtil.ProcessEndCommand();
     return(base.NonQueryExecutedAsync(command, eventData, result, cancellationToken));
 }
Пример #11
0
 /// <summary>
 /// Trace after executing.
 /// </summary>
 /// <param name="command">Instance of <see cref="DbCommand"/>.</param>
 /// <param name="eventData">Instance of <see cref="CommandExecutedEventData"/>.</param>
 /// <param name="result">Result as integer.</param>
 /// <returns>Result as integer.</returns>
 public override int NonQueryExecuted(DbCommand command, CommandExecutedEventData eventData, int result)
 {
     EFUtil.ProcessEndCommand();
     return(base.NonQueryExecuted(command, eventData, result));
 }
Пример #12
0
 /// <summary>
 /// Trace after async command fails.
 /// </summary>
 /// <param name="command">Instance of <see cref="DbCommand"/>.</param>
 /// <param name="eventData">Instance of <see cref="CommandErrorEventData"/>.</param>
 /// <param name="cancellationToken">Instance of <see cref="CancellationToken"/>.</param>
 /// <returns>Task representing the async operation.</returns>
 public override Task CommandFailedAsync(DbCommand command, CommandErrorEventData eventData, CancellationToken cancellationToken = default)
 {
     EFUtil.ProcessCommandError(eventData.Exception);
     return(base.CommandFailedAsync(command, eventData, cancellationToken));
 }
 private void OnCommandStart(DbCommand command)
 {
     EFUtil.ProcessBeginCommand(command, _collectSqlQueriesOverride);
 }
Пример #14
0
 /// <summary>
 /// Builds the name of the subsegment in the format database@datasource
 /// </summary>
 /// <param name="command">Instance of <see cref="DbCommand"/>.</param>
 /// <returns>Returns the formed subsegment name as a string.</returns>
 private string BuildSubsegmentName(DbCommand command)
 => command.Connection.Database + "@" + EFUtil.RemovePortNumberFromDataSource(command.Connection.DataSource);