/// <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(); } }
/// <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); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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); }
/// <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);