private static IEnumerable <TResult> Include <TResult>(
            QueryContext queryContext,
            IEnumerable <TResult> source,
            INavigation navigation,
            InMemoryDatabase.InMemoryTable targetTable,
            Func <TResult, object> accessorLambda)
        {
            var inMemoryQueryContext = ((InMemoryQueryContext)queryContext);

            return
                (source
                 .Select(result =>
            {
                inMemoryQueryContext.QueryBuffer
                .Include(
                    accessorLambda.Invoke(result),
                    navigation,
                    (primaryKey, relatedKeyFactory) =>
                    targetTable
                    .Select(vs => new ObjectArrayValueReader(vs))
                    .Where(valueReader => relatedKeyFactory(valueReader).Equals(primaryKey))
                    );

                return result;
            }));
        }
Example #2
0
 private static IEnumerable <IValueReader> GetRelatedValueReaders(
     InMemoryDatabase.InMemoryTable targetTable,
     EntityKey primaryKey,
     Func <IValueReader, EntityKey> relatedKeyFactory)
 {
     return(targetTable
            .Select(vs => new ObjectArrayValueReader(vs))
            .Where(valueReader => relatedKeyFactory(valueReader).Equals(primaryKey)));
 }
Example #3
0
 private static IEnumerable <TEntity> EntityQuery <TEntity>(
     QueryContext queryContext,
     IEntityType entityType,
     InMemoryDatabase.InMemoryTable inMemoryTable)
 {
     return(inMemoryTable
            .Select(t => (TEntity)queryContext.QueryBuffer
                    .GetEntity(entityType, new ObjectArrayValueReader(t))));
 }
Example #4
0
 private static IEnumerable <TEntity> EntityQuery <TEntity>(
     QueryContext queryContext,
     IEntityType entityType,
     InMemoryDatabase.InMemoryTable inMemoryTable,
     bool queryStateManager)
     where TEntity : class
 {
     return(inMemoryTable
            .Select(t => (TEntity)queryContext.QueryBuffer
                    .GetEntity(entityType, new ObjectArrayValueReader(t), queryStateManager)));
 }
Example #5
0
 private static IEnumerable <IValueReader> ProjectionQuery(InMemoryDatabase.InMemoryTable inMemoryTable)
 {
     return(inMemoryTable.Select(t => new ObjectArrayValueReader(t)));
 }