コード例 #1
0
 public static IAsyncRemoteQueryable <T> CreateEntityFrameworkCoreAsyncQueryable <T, TSource>(
     this RemoteQueryableFactory factory,
     Func <RemoteLinq.Expression, ValueTask <TSource?> > dataProvider,
     IAsyncQueryResultMapper <TSource> resultMapper,
     ITypeInfoProvider?typeInfoProvider = null,
     Func <SystemLinq.Expression, bool>?canBeEvaluatedLocally = null)
 => CreateEntityFrameworkCoreAsyncQueryable <T, TSource>(factory, dataProvider, resultMapper, GetExpressionToRemoteLinqContext(typeInfoProvider, canBeEvaluatedLocally));
コード例 #2
0
 internal AsyncRemoteQueryProvider(Func <Expressions.Expression, CancellationToken, Task <TSource> > asyncDataProvider, ITypeInfoProvider?typeInfoProvider, IAsyncQueryResultMapper <TSource> resultMapper, Func <Expression, bool>?canBeEvaluatedLocally)
 {
     _asyncDataProvider     = asyncDataProvider.CheckNotNull(nameof(asyncDataProvider));
     _resultMapper          = resultMapper.CheckNotNull(nameof(resultMapper));
     _typeInfoProvider      = typeInfoProvider;
     _canBeEvaluatedLocally = canBeEvaluatedLocally;
 }
コード例 #3
0
 public static IAsyncRemoteQueryable CreateEntityFrameworkCoreAsyncQueryable <TSource>(
     this RemoteQueryableFactory factory,
     Type elementType,
     Func <RemoteLinq.Expression, ValueTask <TSource?> > dataProvider,
     IAsyncQueryResultMapper <TSource> resultMapper,
     IExpressionToRemoteLinqContext?context = null)
 => factory.CreateAsyncQueryable(elementType, dataProvider, resultMapper, GetOrCreateContext(context));
コード例 #4
0
 internal AsyncRemoteQueryProvider(Func <Expressions.Expression, Task <TSource> > dataProvider, ITypeInfoProvider typeInfoProvider, IAsyncQueryResultMapper <TSource> resutMapper, Func <Expression, bool> canBeEvaluatedLocally)
 {
     _dataProvider          = dataProvider ?? throw new ArgumentNullException(nameof(dataProvider));
     _resultMapper          = resutMapper;
     _typeInfoProvider      = typeInfoProvider;
     _canBeEvaluatedLocally = canBeEvaluatedLocally;
 }
コード例 #5
0
 public static IAsyncRemoteStreamQueryable <T> CreateEntityFrameworkCoreAsyncStreamQueryable <T>(
     this RemoteQueryableFactory factory,
     Func <RemoteLinq.Expression, IAsyncEnumerable <object?> > dataProvider,
     IAsyncQueryResultMapper <object?>?resultMapper           = null,
     ITypeInfoProvider?typeInfoProvider                       = null,
     Func <SystemLinq.Expression, bool>?canBeEvaluatedLocally = null)
 => CreateEntityFrameworkCoreAsyncStreamQueryable <T>(factory, dataProvider, resultMapper, GetExpressionToRemoteLinqContext(typeInfoProvider, canBeEvaluatedLocally));
コード例 #6
0
 /// <summary>
 /// Creates an instance of <see cref="IAsyncRemoteStreamQueryable{T}" /> that utilizes the async stream provider specified.
 /// </summary>
 /// <typeparam name="T">Element type of the <see cref="IAsyncRemoteStreamQueryable{T}"/>.</typeparam>
 public static IAsyncRemoteStreamQueryable <T> CreateAsyncStreamQueryable <T>(
     this RemoteQueryableFactory factory,
     Func <RemoteLinq.Expression, CancellationToken, IAsyncEnumerable <object?> > dataProvider,
     IAsyncQueryResultMapper <object>?resultMapper,
     ITypeInfoProvider?typeInfoProvider,
     Func <SystemLinq.Expression, bool>?canBeEvaluatedLocally = null)
 => CreateAsyncStreamQueryable <T>(factory, dataProvider, resultMapper, RemoteQueryable.GetExpressionTranslatorContextOrNull(typeInfoProvider, canBeEvaluatedLocally));
コード例 #7
0
 /// <summary>
 /// Creates an instance of <see cref="IAsyncQueryable{T}" /> that utilizes the async stream provider specified.
 /// </summary>
 /// <typeparam name="T">Element type of the <see cref="IAsyncQueryable{T}"/>.</typeparam>
 public static IAsyncQueryable <T> CreateAsyncQueryable <T>(
     this RemoteQueryableFactory factory,
     Func <RemoteLinq.Expression, CancellationToken, IAsyncEnumerable <object?> >?asyncStreamProvider,
     Func <RemoteLinq.Expression, CancellationToken, ValueTask <object?> >?asyncDataProvider,
     IAsyncQueryResultMapper <object>?resultMapper = null,
     IExpressionToRemoteLinqContext?context        = null)
 => CreateAsyncQueryable <T, object>(factory, asyncStreamProvider, asyncDataProvider, resultMapper ?? new AsyncObjectResultCaster(), context);
コード例 #8
0
 public static IAsyncRemoteQueryable <T> CreateEntityFrameworkAsyncQueryable <T, TSource>(
     this RemoteQueryableFactory factory,
     Func <Expressions.Expression, ValueTask <TSource?> > dataProvider,
     IAsyncQueryResultMapper <TSource> resultMapper,
     ITypeInfoProvider?typeInfoProvider = null,
     Func <System.Linq.Expressions.Expression, bool>?canBeEvaluatedLocally = null)
 => factory.CreateAsyncQueryable <T, TSource>(dataProvider, resultMapper, typeInfoProvider, canBeEvaluatedLocally);
コード例 #9
0
 public static IAsyncRemoteQueryable CreateEntityFrameworkAsyncQueryable(
     this RemoteQueryableFactory factory,
     Type elementType,
     Func <Expressions.Expression, ValueTask <object?> > dataProvider,
     ITypeInfoProvider?typeInfoProvider            = null,
     IAsyncQueryResultMapper <object>?resultMapper = null,
     Func <System.Linq.Expressions.Expression, bool>?canBeEvaluatedLocally = null)
 => factory.CreateAsyncQueryable(elementType, dataProvider, typeInfoProvider, resultMapper, canBeEvaluatedLocally);
コード例 #10
0
 public static IAsyncRemoteQueryable CreateEntityFrameworkCoreAsyncQueryable(
     this RemoteQueryableFactory factory,
     Type elementType,
     Func <RemoteLinq.Expression, ValueTask <object?> > dataProvider,
     ITypeInfoProvider?typeInfoProvider                       = null,
     IAsyncQueryResultMapper <object>?resultMapper            = null,
     Func <SystemLinq.Expression, bool>?canBeEvaluatedLocally = null)
 => CreateEntityFrameworkCoreAsyncQueryable(factory, elementType, dataProvider, resultMapper, GetExpressionToRemoteLinqContext(typeInfoProvider, canBeEvaluatedLocally));
コード例 #11
0
 public AsyncRemoteQueryProvider(
     Func <RemoteLinq.Expression, CancellationToken, ValueTask <TSource?> > asyncDataProvider,
     IAsyncQueryResultMapper <TSource> resultMapper,
     IExpressionToRemoteLinqContext?context)
 {
     _asyncDataProvider = asyncDataProvider.CheckNotNull(nameof(asyncDataProvider));
     _resultMapper      = resultMapper.CheckNotNull(nameof(resultMapper));
     _context           = context;
 }
コード例 #12
0
 public AsyncRemoteStreamProvider(
     Func <Expressions.Expression, CancellationToken, IAsyncEnumerable <TSource?> > dataProvider,
     IAsyncQueryResultMapper <TSource> resultMapper,
     IExpressionToRemoteLinqContext?context)
 {
     _dataProvider = dataProvider.CheckNotNull(nameof(dataProvider));
     _resultMapper = resultMapper.CheckNotNull(nameof(resultMapper));
     _context      = context;
 }
コード例 #13
0
        /// <summary>
        /// Creates an instance of <see cref="IAsyncRemoteStreamQueryable{T}" /> that utilizes the async stream provider specified.
        /// </summary>
        /// <typeparam name="T">Element type of the <see cref="IAsyncRemoteStreamQueryable{T}"/>.</typeparam>
        /// <typeparam name="TSource">Data type served by the data provider.</typeparam>
        public static IAsyncRemoteStreamQueryable <T> CreateAsyncStreamQueryable <T, TSource>(
            this RemoteQueryableFactory factory,
            Func <RemoteLinq.Expression, CancellationToken, IAsyncEnumerable <TSource?> > dataProvider,
            IAsyncQueryResultMapper <TSource> resultMapper,
            IExpressionToRemoteLinqContext?context = null)
        {
            var queryProvider = new AsyncRemoteStreamProvider <TSource>(dataProvider, resultMapper, context);

            return(new AsyncRemoteStreamQueryable <T>(queryProvider));
        }
コード例 #14
0
        internal AsyncRemoteQueryProvider(Func <Expressions.Expression, Task <TSource> > dataProvider, ITypeResolver typeResolver, IAsyncQueryResultMapper <TSource> resutMapper, Func <Expression, bool> canBeEvaluatedLocally)
        {
            if (ReferenceEquals(null, dataProvider))
            {
                throw new ArgumentNullException(nameof(dataProvider));
            }

            _dataProvider          = dataProvider;
            _resultMapper          = resutMapper;
            _typeResolver          = typeResolver;
            _canBeEvaluatedLocally = canBeEvaluatedLocally;
        }
コード例 #15
0
 /// <summary>
 /// Creates an instance of <see cref="IAsyncQueryable{T}" /> that utilizes the async stream provider specified.
 /// </summary>
 /// <typeparam name="T">Element type of the <see cref="IAsyncQueryable{T}"/>.</typeparam>
 /// <typeparam name="TSource">Data type served by the data provider.</typeparam>
 public static IAsyncQueryable <T> CreateAsyncQueryable <T, TSource>(
     this RemoteQueryableFactory factory,
     Func <RemoteLinq.Expression, IAsyncEnumerable <TSource?> >?asyncStreamProvider,
     Func <RemoteLinq.Expression, ValueTask <TSource?> >?asyncDataProvider,
     IAsyncQueryResultMapper <TSource> resultMapper,
     IExpressionToRemoteLinqContext?context = null)
 => CreateAsyncQueryable <T, TSource>(
     factory,
     asyncStreamProvider is null ? null : (RemoteLinq.Expression exp, CancellationToken _) => asyncStreamProvider(exp),
     asyncDataProvider is null ? null : (RemoteLinq.Expression exp, CancellationToken _) => asyncDataProvider(exp),
     resultMapper,
     context);
コード例 #16
0
        public RemoteLinqAsyncQueryProvider(
            Func <RemoteLinq.Expression, CancellationToken, IAsyncEnumerable <TSource?> >?asyncStreamProvider,
            Func <RemoteLinq.Expression, CancellationToken, ValueTask <TSource?> >?asyncDataProvider,
            IAsyncQueryResultMapper <TSource> resultMapper,
            IExpressionToRemoteLinqContext?context = null)
        {
            if (asyncStreamProvider is null && asyncDataProvider is null)
            {
                throw new ArgumentNullException(
                          $"{nameof(asyncStreamProvider)}, {nameof(asyncDataProvider)}",
                          $"At least one of '{nameof(asyncStreamProvider)}' and '{nameof(asyncDataProvider)}' must not be null.");
            }

            _asyncStreamProvider = asyncStreamProvider;
            _asyncDataProvider   = asyncDataProvider;
            _resultMapper        = resultMapper.CheckNotNull(nameof(resultMapper));
            _context             = context;
        }
コード例 #17
0
        /// <summary>
        /// Creates an instance of <see cref="IQueryable{T}" /> that utilizes the data provider specified.
        /// </summary>
        /// <typeparam name="T">Element type of the <see cref="IQueryable{T}"/>.</typeparam>
        /// <typeparam name="TSource">Data type served by the data provider.</typeparam>
        public static IQueryable <T> CreateAsyncQueryable <T, TSource>(this RemoteQueryableFactory factory, Func <Expressions.Expression, Task <TSource> > dataProvider, IAsyncQueryResultMapper <TSource> resultMapper, ITypeInfoProvider typeInfoProvider = null, Func <System.Linq.Expressions.Expression, bool> canBeEvaluatedLocally = null)
        {
            var queryProvider = new AsyncRemoteQueryProvider <TSource>(dataProvider, typeInfoProvider, resultMapper, canBeEvaluatedLocally);

            return(new Remote.Linq.DynamicQuery.AsyncRemoteQueryable <T>(queryProvider));
        }
コード例 #18
0
        /// <summary>
        /// Creates an instance of <see cref="IQueryable{T}"/> that utilizes the data provider specified.
        /// </summary>
        /// <typeparam name="T">Element type of the <see cref="IQueryable{T}"/>.</typeparam>
        public static IQueryable <T> CreateAsyncQueryable <T>(this RemoteQueryableFactory factory, Func <Expressions.Expression, Task <object> > dataProvider, ITypeInfoProvider typeInfoProvider = null, IAsyncQueryResultMapper <object> resultMapper = null, Func <System.Linq.Expressions.Expression, bool> canBeEvaluatedLocally = null)
        {
            if (resultMapper is null)
            {
                resultMapper = new AsyncObjectResultCaster();
            }

            return(factory.CreateAsyncQueryable <T, object>(dataProvider, resultMapper, typeInfoProvider, canBeEvaluatedLocally));
        }
コード例 #19
0
 public static IQueryable <T> CreateEntityFrameworkCoreAsyncQueryable <T, TSource>(this RemoteQueryableFactory factory, Func <Expressions.Expression, Task <TSource> > dataProvider, IAsyncQueryResultMapper <TSource> resultMapper, ITypeInfoProvider typeInfoProvider = null, Func <System.Linq.Expressions.Expression, bool> canBeEvaluatedLocally = null)
 => factory.CreateQueryable <T, TSource>(dataProvider, resultMapper, typeInfoProvider, canBeEvaluatedLocally.And(ExpressionEvaluator.CanBeEvaluated));
コード例 #20
0
        /// <summary>
        /// Creates an instance of <see cref="IQueryable" /> that utilizes the data provider specified
        /// </summary>
        public static IQueryable CreateAsyncQueryable(this RemoteQueryableFactory factory, Type elementType, Func <Expressions.Expression, Task <object> > dataProvider, ITypeResolver typeResolver = null, IAsyncQueryResultMapper <object> resultMapper = null, Func <System.Linq.Expressions.Expression, bool> canBeEvaluatedLocally = null)
        {
            if (ReferenceEquals(null, resultMapper))
            {
                resultMapper = new AsyncObjectResultCaster();
            }

            return(factory.CreateAsyncQueryable <object>(elementType, dataProvider, resultMapper, typeResolver, canBeEvaluatedLocally));
        }
コード例 #21
0
 public static IQueryable CreateEntityFrameworkCoreAsyncQueryable(this RemoteQueryableFactory factory, Type elementType, Func <Expressions.Expression, Task <object> > dataProvider, ITypeInfoProvider typeInfoProvider = null, IAsyncQueryResultMapper <object> resultMapper = null, Func <System.Linq.Expressions.Expression, bool> canBeEvaluatedLocally = null)
 => factory.CreateQueryable(elementType, dataProvider, typeInfoProvider, resultMapper, canBeEvaluatedLocally.And(ExpressionEvaluator.CanBeEvaluated));
コード例 #22
0
 public static IRemoteQueryable CreateEntityFrameworkCoreQueryable(this RemoteQueryableFactory factory, Type elementType, Func <RemoteLinq.Expression, Task <object> > dataProvider, ITypeInfoProvider?typeInfoProvider = null, IAsyncQueryResultMapper <object>?resultMapper = null, Func <SystemLinq.Expression, bool>?canBeEvaluatedLocally = null)
 => throw new NotSupportedException(TaskBasedMethodObsolete);
コード例 #23
0
 public static IAsyncRemoteQueryable <T> CreateEntityFrameworkCoreQueryable <T, TSource>(this RemoteQueryableFactory factory, Func <RemoteLinq.Expression, ValueTask <TSource> > dataProvider, IAsyncQueryResultMapper <TSource> resultMapper, ITypeInfoProvider?typeInfoProvider = null, Func <SystemLinq.Expression, bool>?canBeEvaluatedLocally = null)
 => throw new NotSupportedException(TaskBasedMethodObsolete);
コード例 #24
0
 public static IQueryable <T> CreateEntityFrameworkAsyncQueryable <T>(this RemoteQueryableFactory factory, Func <Expressions.Expression, Task <object> > dataProvider, ITypeInfoProvider typeInfoProvider = null, IAsyncQueryResultMapper <object> resultMapper = null, Func <System.Linq.Expressions.Expression, bool> canBeEvaluatedLocally = null)
 => factory.CreateQueryable <T>(dataProvider, typeInfoProvider, resultMapper, canBeEvaluatedLocally);
コード例 #25
0
 public static IAsyncRemoteStreamQueryable <T> CreateEntityFrameworkCoreAsyncStreamQueryable <T, TSource>(
     this RemoteQueryableFactory factory,
     Func <RemoteLinq.Expression, IAsyncEnumerable <TSource?> > dataProvider,
     IAsyncQueryResultMapper <TSource> resultMapper,
     IExpressionToRemoteLinqContext?context = null)
 => factory.CreateAsyncStreamQueryable <T, TSource>(dataProvider, resultMapper, GetOrCreateContext(context));
コード例 #26
0
 public static IAsyncRemoteQueryable <T> CreateEntityFrameworkCoreAsyncQueryable <T>(
     this RemoteQueryableFactory factory,
     Func <RemoteLinq.Expression, ValueTask <object?> > dataProvider,
     IAsyncQueryResultMapper <object>?resultMapper = null,
     IExpressionToRemoteLinqContext?context        = null)
 => factory.CreateAsyncQueryable <T>(dataProvider, resultMapper, GetOrCreateContext(context));
コード例 #27
0
 public static IQueryable CreateEntityFrameworkAsyncQueryable <TSource>(this RemoteQueryableFactory factory, Type elementType, Func <Expressions.Expression, Task <TSource> > dataProvider, IAsyncQueryResultMapper <TSource> resultMapper, ITypeResolver typeResolver = null, Func <System.Linq.Expressions.Expression, bool> canBeEvaluatedLocally = null)
 => factory.CreateAsyncQueryable <TSource>(elementType, dataProvider, resultMapper, typeResolver, canBeEvaluatedLocally);
コード例 #28
0
 public static IQueryable <T> CreateAsyncQueryable <T, TSource>(this RemoteQueryableFactory factory, Func <Expressions.Expression, CancellationToken, Task <TSource> > dataProvider, IAsyncQueryResultMapper <TSource> resultMapper, ITypeInfoProvider typeInfoProvider = null, Func <System.Linq.Expressions.Expression, bool> canBeEvaluatedLocally = null)
 => factory.CreateQueryable <T, TSource>(dataProvider, resultMapper, typeInfoProvider, canBeEvaluatedLocally);
コード例 #29
0
 public static IRemoteQueryable CreateQueryable <TSource>(this RemoteQueryableFactory factory, Type elementType, Func <RemoteLinq.Expression, CancellationToken, Task <TSource> > dataProvider, IAsyncQueryResultMapper <TSource> resultMapper, ITypeInfoProvider?typeInfoProvider = null, Func <SystemLinq.Expression, bool>?canBeEvaluatedLocally = null)
 => throw new NotSupportedException(TaskBasedMethodObsolete);
コード例 #30
0
 public static IAsyncRemoteQueryable <T> CreateQueryable <T>(this RemoteQueryableFactory factory, Func <RemoteLinq.Expression, CancellationToken, ValueTask <object> > dataProvider, ITypeInfoProvider?typeInfoProvider = null, IAsyncQueryResultMapper <object>?resultMapper = null, Func <SystemLinq.Expression, bool>?canBeEvaluatedLocally = null)
 => throw new NotSupportedException(TaskBasedMethodObsolete);