public RelationalCommandBuilder( [NotNull] ISensitiveDataLogger logger, [NotNull] DiagnosticSource diagnosticSource, [NotNull] IRelationalTypeMapper typeMapper) { Check.NotNull(logger, nameof(logger)); Check.NotNull(diagnosticSource, nameof(diagnosticSource)); Check.NotNull(typeMapper, nameof(typeMapper)); _logger = logger; _diagnosticSource = diagnosticSource; _typeMapper = typeMapper; }
/// <summary> /// This API supports the Entity Framework Core infrastructure and is not intended to be used /// directly from your code. This API may change or be removed in future releases. /// </summary> public QueryCompiler( [NotNull] IQueryContextFactory queryContextFactory, [NotNull] ICompiledQueryCache compiledQueryCache, [NotNull] ICompiledQueryCacheKeyGenerator compiledQueryCacheKeyGenerator, [NotNull] IDatabase database, [NotNull] ISensitiveDataLogger <QueryCompiler> logger, [NotNull] MethodInfoBasedNodeTypeRegistry methodInfoBasedNodeTypeRegistry, [NotNull] ICurrentDbContext currentContext) { Check.NotNull(queryContextFactory, nameof(queryContextFactory)); Check.NotNull(compiledQueryCache, nameof(compiledQueryCache)); Check.NotNull(compiledQueryCacheKeyGenerator, nameof(compiledQueryCacheKeyGenerator)); Check.NotNull(database, nameof(database)); Check.NotNull(logger, nameof(logger)); Check.NotNull(currentContext, nameof(currentContext)); _queryContextFactory = queryContextFactory; _compiledQueryCache = compiledQueryCache; _compiledQueryCacheKeyGenerator = compiledQueryCacheKeyGenerator; _database = database; _logger = logger; _methodInfoBasedNodeTypeRegistry = methodInfoBasedNodeTypeRegistry; _contextType = currentContext.Context.GetType(); }
protected override IRelationalCommand BuildCore( ISensitiveDataLogger sensitiveDataLogger, DiagnosticSource diagnosticSource, string commandText, IReadOnlyList <IRelationalParameter> parameters) => new BadDataRelationalCommand(sensitiveDataLogger, diagnosticSource, commandText, parameters, _values);
protected override IRelationalCommandBuilder CreateCore( ISensitiveDataLogger sensitiveDataLogger, DiagnosticSource diagnosticSource, IRelationalTypeMapper relationalTypeMapper) => new BadDataRelationalCommandBuilder( sensitiveDataLogger, diagnosticSource, relationalTypeMapper, Values);
/// <summary> /// This API supports the Entity Framework Core infrastructure and is not intended to be used /// directly from your code. This API may change or be removed in future releases. /// </summary> public QueryCompilationContextDependencies With([NotNull] ISensitiveDataLogger <IQueryCompilationContextFactory> logger) => new QueryCompilationContextDependencies( Model, Check.NotNull(logger, nameof(logger)), EntityQueryModelVisitorFactory, RequiresMaterializationExpressionVisitorFactory, CurrentContext);
private IRelationalCommand CreateRelationalCommand( ISensitiveDataLogger logger = null, DiagnosticSource diagnosticSource = null, string commandText = "Command Text", IReadOnlyList<IRelationalParameter> parameters = null) => new RelationalCommand( logger ?? new FakeSensitiveDataLogger<RelationalCommand>(), diagnosticSource ?? new DiagnosticListener("Fake"), commandText, parameters ?? new IRelationalParameter[0]);
/// <summary> /// This API supports the Entity Framework Core infrastructure and is not intended to be used /// directly from your code. This API may change or be removed in future releases. /// </summary> public static void LogCommandExecuted( [NotNull] this ISensitiveDataLogger logger, [NotNull] DbCommand command, long startTimestamp, long currentTimestamp) { Check.NotNull(logger, nameof(logger)); Check.NotNull(command, nameof(command)); if (logger.IsEnabled(LogLevel.Information)) { var logParameterValues = command.Parameters.Count > 0 && logger.LogSensitiveData; #pragma warning disable 618 var logData = new DbCommandLogData( #pragma warning restore 618 command.CommandText.TrimEnd(), command.CommandType, command.CommandTimeout, command.Parameters .Cast <DbParameter>() .Select( p => new DbParameterLogData( p.ParameterName, logParameterValues ? p.Value : "?", logParameterValues, p.Direction, p.DbType, p.IsNullable, p.Size, p.Precision, p.Scale)) .ToList(), DeriveTimespan(startTimestamp, currentTimestamp)); logger.Log( LogLevel.Information, (int)RelationalEventId.ExecutedCommand, logData, null, (state, _) => { var elapsedMilliseconds = DeriveTimespan(startTimestamp, currentTimestamp); return(RelationalStrings.RelationalLoggerExecutedCommand( string.Format( CultureInfo.InvariantCulture, string.Format(CultureInfo.InvariantCulture, "{0:N0}", elapsedMilliseconds)), state.Parameters // Interpolation okay here because value is always a string. .Select(p => $"{p.Name}={p.FormatParameter()}") .Join(), state.CommandType, state.CommandTimeout, Environment.NewLine, state.CommandText)); }); } }