public ImpatientDbContextOptionsExtension WithCompatibility(ImpatientCompatibility compatibility) { return(new ImpatientDbContextOptionsExtension(this) { compatibility = compatibility }); }
public DefaultQueryProcessingContextFactory( DescriptorSet descriptorSet, ImpatientCompatibility compatibility) { this.descriptorSet = descriptorSet ?? throw new ArgumentNullException(nameof(descriptorSet)); this.compatibility = compatibility; }
public EFCoreQueryProcessingContextFactory( ICurrentDbContext currentDbContext, DescriptorSet descriptorSet, ImpatientCompatibility compatibility) { this.currentDbContext = currentDbContext ?? throw new ArgumentNullException(nameof(currentDbContext)); this.descriptorSet = descriptorSet ?? throw new ArgumentNullException(nameof(descriptorSet)); this.compatibility = compatibility; }
public static IServiceProvider CreateServiceProvider( DescriptorSet descriptorSet = null, string connectionString = null, ImpatientCompatibility compatibility = ImpatientCompatibility.Default) { var services = new ServiceCollection(); #region services that would typically be DI-handled services.AddSingleton <IImpatientQueryCache, DefaultImpatientQueryCache>(); services.AddSingleton <TranslatabilityAnalyzingExpressionVisitor>(); services.AddSingleton <ITypeMappingProvider, DefaultTypeMappingProvider>(); services.AddSingleton <IQueryFormattingProvider, SqlServerQueryFormattingProvider>(); services.AddScoped <IReadValueExpressionFactoryProvider, DefaultReadValueExpressionFactoryProvider>(); services.AddScoped <IRewritingExpressionVisitorProvider, DefaultRewritingExpressionVisitorProvider>(); services.AddScoped <IProviderSpecificRewritingExpressionVisitorProvider, SqlServerRewritingExpressionVisitorProvider>(); services.AddScoped <IOptimizingExpressionVisitorProvider, DefaultOptimizingExpressionVisitorProvider>(); services.AddScoped <IComposingExpressionVisitorProvider, DefaultComposingExpressionVisitorProvider>(); services.AddScoped <ICompilingExpressionVisitorProvider, DefaultCompilingExpressionVisitorProvider>(); services.AddScoped <IQueryableInliningExpressionVisitorFactory, DefaultQueryInliningExpressionVisitorFactory>(); services.AddScoped <IQueryTranslatingExpressionVisitorFactory, DefaultQueryTranslatingExpressionVisitorFactory>(); services.AddScoped <IQueryProcessingContextFactory>(provider => { return(new DefaultQueryProcessingContextFactory( provider.GetRequiredService <DescriptorSet>(), compatibility)); }); services.AddScoped <IDbCommandExecutorFactory>(provider => provider.GetRequiredService <TestDbCommandExecutorFactory>()); services.AddScoped <IImpatientQueryProcessor, DefaultImpatientQueryProcessor>(); #endregion services.AddSingleton(descriptorSet ?? DescriptorSet.Empty); services.AddSingleton <ImpatientQueryProvider>(); services.AddScoped <NorthwindQueryContext>(); services.AddScoped(provider => new TestDbCommandExecutorFactory(connectionString)); return(services.BuildServiceProvider()); }
public QueryProcessingContext( IQueryProvider queryProvider, DescriptorSet descriptorSet, ImpatientCompatibility compatibility) { QueryProvider = queryProvider; DescriptorSet = descriptorSet; Compatibility = compatibility; ParameterMapping = new Dictionary <object, ParameterExpression>(); }
protected ImpatientDbContextOptionsExtension(ImpatientDbContextOptionsExtension template) { compatibility = template.compatibility; }
public ImpatientDbContextOptionsExtension() { compatibility = ImpatientCompatibility.Default; }
public ImpatientDbContextOptionsBuilder WithCompatibility(ImpatientCompatibility compatibility) { return(WithOption(e => e.WithCompatibility(compatibility))); }
public static IServiceCollection AddImpatientEFCoreQueryCompiler( this IServiceCollection services, ImpatientCompatibility compatibility) { foreach (var descriptor in services.Where(s => s.ServiceType == typeof(IQueryCompiler)).ToArray()) { services.Remove(descriptor); } services.AddSingleton <IImpatientQueryCache, DefaultImpatientQueryCache>(); services.AddSingleton <ModelExpressionProvider>(); services.AddSingleton <DescriptorSetCache>(); services.AddSingleton <ModelQueryExpressionCache>(); services.AddSingleton <TranslatabilityAnalyzingExpressionVisitor>(); services.AddSingleton <IQueryTranslatingExpressionVisitorFactory, DefaultQueryTranslatingExpressionVisitorFactory>(); services.AddSingleton <IReadValueExpressionFactoryProvider, DefaultReadValueExpressionFactoryProvider>(); services.AddSingleton <ITypeMappingProvider, EFCoreTypeMappingProvider>(); services.AddSingleton <IQueryFormattingProvider, SqlServerQueryFormattingProvider>(); services.AddScoped <IOptimizingExpressionVisitorProvider, DefaultOptimizingExpressionVisitorProvider>(); services.AddScoped <IComposingExpressionVisitorProvider, EFCoreComposingExpressionVisitorProvider>(); services.AddScoped <IRewritingExpressionVisitorProvider, EFCoreRewritingExpressionVisitorProvider>(); services.AddScoped <IProviderSpecificRewritingExpressionVisitorProvider, SqlServerRewritingExpressionVisitorProvider>(); services.AddScoped <ICompilingExpressionVisitorProvider, EFCoreCompilingExpressionVisitorProvider>(); services.AddScoped <IQueryableInliningExpressionVisitorFactory, EFCoreQueryableInliningExpressionVisitorFactory>(); services.AddScoped <IDbCommandExecutorFactory, EFCoreDbCommandExecutorFactory>(); services.AddScoped <IQueryProcessingContextFactory>(provider => { return(new EFCoreQueryProcessingContextFactory( provider.GetRequiredService <ICurrentDbContext>(), provider.GetRequiredService <DescriptorSet>(), compatibility)); }); services.AddScoped <IImpatientQueryProcessor, DefaultImpatientQueryProcessor>(); services.AddScoped <IQueryCompiler, ImpatientQueryCompiler>(); services.AddScoped(provider => { var cache = provider.GetRequiredService <DescriptorSetCache>(); var context = provider.GetRequiredService <ICurrentDbContext>().Context; return(cache.GetDescriptorSet(context)); }); return(services); }