コード例 #1
0
 public InfoCarrierDatabase(
     DatabaseDependencies dependencies,
     IDbContextOptions options)
     : base(dependencies)
 {
     this.infoCarrierClient = options.Extensions.OfType <InfoCarrierOptionsExtension>().First().InfoCarrierClient;
 }
コード例 #2
0
 public InfoCarrierQueryContextFactory(
     QueryContextDependencies dependencies,
     IDbContextOptions contextOptions)
     : base(dependencies)
 {
     this.infoCarrierClient = contextOptions.Extensions.OfType <InfoCarrierOptionsExtension>().First().InfoCarrierClient;
 }
コード例 #3
0
 public InfoCarrierQueryContext(
     QueryContextDependencies dependencies,
     Func <IQueryBuffer> queryBufferFactory,
     IInfoCarrierClient infoCarrierClient)
     : base(dependencies, queryBufferFactory)
 {
     this.InfoCarrierClient = infoCarrierClient;
 }
コード例 #4
0
        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);
        }
コード例 #5
0
                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();
                }
コード例 #6
0
        /// <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);
        }
コード例 #7
0
 /// <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);