public InfoCarrierDatabase( DatabaseDependencies dependencies, IDbContextOptions options) : base(dependencies) { this.infoCarrierClient = options.Extensions.OfType <InfoCarrierOptionsExtension>().First().InfoCarrierClient; }
public InfoCarrierQueryContextFactory( QueryContextDependencies dependencies, IDbContextOptions contextOptions) : base(dependencies) { this.infoCarrierClient = contextOptions.Extensions.OfType <InfoCarrierOptionsExtension>().First().InfoCarrierClient; }
public InfoCarrierQueryContext( QueryContextDependencies dependencies, Func <IQueryBuffer> queryBufferFactory, IInfoCarrierClient infoCarrierClient) : base(dependencies, queryBufferFactory) { this.InfoCarrierClient = infoCarrierClient; }
public void Can_replace_extension() { IInfoCarrierClient client = InfoCarrierTestHelpers.CreateDummyClient(typeof(DbContext)); var optionsBuilder = new DbContextOptionsBuilder(); optionsBuilder.UseInfoCarrierClient(client); var extension1 = optionsBuilder.Options.Extensions.OfType <InfoCarrierOptionsExtension>().Single(); optionsBuilder.UseInfoCarrierClient(client); var extension2 = optionsBuilder.Options.Extensions.OfType <InfoCarrierOptionsExtension>().Single(); Assert.NotSame(extension1, extension2); Assert.Same(extension1.InfoCarrierClient, extension2.InfoCarrierClient); }
public QueryExecutor( PreparedQuery preparedQuery, QueryContext queryContext, IReadOnlyDictionary <string, IEntityType> entityTypeMap) { this.queryContext = queryContext; this.createResultMapper = () => new InfoCarrierQueryResultMapper(queryContext, preparedQuery.TypeResolver, preparedQuery.TypeInfoProvider, entityTypeMap); this.infoCarrierClient = ((InfoCarrierQueryContext)queryContext).InfoCarrierClient; // Substitute query parameters Expression expression = new SubstituteParametersExpressionVisitor(queryContext).Visit(preparedQuery.Expression); // UGLY: this resembles Remote.Linq.DynamicQuery.RemoteQueryProvider<>.TranslateExpression() this.rlinq = expression .ToRemoteLinqExpression(preparedQuery.TypeInfoProvider, Remote.Linq.EntityFrameworkCore.ExpressionEvaluator.CanBeEvaluated) .ReplaceQueryableByResourceDescriptors(preparedQuery.TypeInfoProvider) .ReplaceGenericQueryArgumentsByNonGenericArguments(); }
/// <summary> /// Configures the context to connect to a remote service via <see cref="IInfoCarrierClient" /> interface. /// </summary> /// <param name="optionsBuilder"> The builder being used to configure the context. </param> /// <param name="infoCarrierClient"> /// The actual implementation of the <see cref="IInfoCarrierClient" /> interface. /// </param> /// <returns> The options builder so that further configuration can be chained. </returns> public static DbContextOptionsBuilder UseInfoCarrierClient( this DbContextOptionsBuilder optionsBuilder, IInfoCarrierClient infoCarrierClient) { if (optionsBuilder.Options.FindExtension <CoreOptionsExtension>() == null) { ((IDbContextOptionsBuilderInfrastructure)optionsBuilder).AddOrUpdateExtension(new CoreOptionsExtension()); } var extension = optionsBuilder.Options.FindExtension <InfoCarrierOptionsExtension>(); extension = extension != null ? new InfoCarrierOptionsExtension(extension) : new InfoCarrierOptionsExtension(); extension.InfoCarrierClient = infoCarrierClient; ((IDbContextOptionsBuilderInfrastructure)optionsBuilder).AddOrUpdateExtension(extension); return(optionsBuilder); }
/// <summary> /// Configures the context to connect to a remote service via <see cref="IInfoCarrierClient" /> interface. /// </summary> /// <typeparam name="TContext"> The type of context being configured. </typeparam> /// <param name="optionsBuilder"> The builder being used to configure the context. </param> /// <param name="infoCarrierClient"> /// The actual implementation of the <see cref="IInfoCarrierClient" /> interface. /// </param> /// <returns> The options builder so that further configuration can be chained. </returns> public static DbContextOptionsBuilder <TContext> UseInfoCarrierClient <TContext>( this DbContextOptionsBuilder <TContext> optionsBuilder, IInfoCarrierClient infoCarrierClient) where TContext : DbContext => (DbContextOptionsBuilder <TContext>)UseInfoCarrierClient( (DbContextOptionsBuilder)optionsBuilder, infoCarrierClient);