/// <summary> /// Clones this dependency parameter object with one service replaced. /// </summary> /// <param name="relationalTransactionFactory"> A replacement for the current dependency of this type. </param> /// <returns> A new parameter object with the given service replaced. </returns> public RelationalConnectionDependencies With([NotNull] IRelationalTransactionFactory relationalTransactionFactory) => new RelationalConnectionDependencies( ContextOptions, TransactionLogger, ConnectionLogger, ConnectionStringResolver, relationalTransactionFactory, CurrentContext);
/// <summary> /// <para> /// Creates the service dependencies parameter object for a <see cref="RelationalConnection" />. /// </para> /// <para> /// Do not call this constructor directly from either provider or application code as it may change /// as new dependencies are added. Instead, use this type in your constructor so that an instance /// will be created and injected automatically by the dependency injection container. To create /// an instance with some dependent services replaced, first resolve the object from the dependency /// injection container, then replace selected services using the 'With...' methods. Do not call /// the constructor at any point in this process. /// </para> /// </summary> /// <param name="contextOptions"> The options for the current context instance. </param> /// <param name="transactionLogger"> The logger to which transaction messages will be written. </param> /// <param name="connectionLogger"> The logger to which connection messages will be written. </param> /// <param name="connectionStringResolver"> A service for resolving a connection string from a name. </param> /// <param name="relationalTransactionFactory"> A service for creating <see cref="RelationalTransaction"/> instances. </param> public RelationalConnectionDependencies( [NotNull] IDbContextOptions contextOptions, [NotNull] IDiagnosticsLogger <DbLoggerCategory.Database.Transaction> transactionLogger, [NotNull] IDiagnosticsLogger <DbLoggerCategory.Database.Connection> connectionLogger, [NotNull] INamedConnectionStringResolver connectionStringResolver, [NotNull] IRelationalTransactionFactory relationalTransactionFactory) { Check.NotNull(contextOptions, nameof(contextOptions)); Check.NotNull(transactionLogger, nameof(transactionLogger)); Check.NotNull(connectionLogger, nameof(connectionLogger)); Check.NotNull(connectionStringResolver, nameof(connectionStringResolver)); Check.NotNull(relationalTransactionFactory, nameof(relationalTransactionFactory)); ContextOptions = contextOptions; TransactionLogger = transactionLogger; ConnectionLogger = connectionLogger; ConnectionStringResolver = connectionStringResolver; RelationalTransactionFactory = relationalTransactionFactory; }