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; })); }
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))); }
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)))); }
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))); }
private static IEnumerable <IValueReader> ProjectionQuery(InMemoryDatabase.InMemoryTable inMemoryTable) { return(inMemoryTable.Select(t => new ObjectArrayValueReader(t))); }