public static EntityApiBuildContext <TKey, TEntity> SetupFilePipes <TKey, TEntity, TDbContext>(
            this EntityApiBuildContext <TKey, TEntity> apiBuildContext,
            Expression <Func <TEntity, string> > property)
            where TEntity : class
            where TDbContext : DbContext
        {
            var compiled = property.Compile();

            return(apiBuildContext.SetupFilePipes <TKey, TEntity>(
                       (sp, x) => Task.FromResult((new string[] { compiled(x) }).AsEnumerable()),
                       async(sp, db, key) =>
            {
                var info = sp.GetRequiredService <IModelInfo <TDbContext, TEntity, TKey> >();
                var exp = CreateWhereExpression <TKey, TEntity, TDbContext>(info, key);
                return await db.Set <TEntity>().Where(exp).Select(property).ToArrayAsync();
            },
                       async(sp, db, model) =>
            {
                var info = sp.GetRequiredService <IModelInfo <TDbContext, TEntity, TKey> >();
                var exp = CreateWhereExpression <TKey, TEntity, TDbContext>(info, info.PrimaryKeyAccessor.Getter(model), true);
                return await db.Set <TEntity>().Where(exp).Select(property).ToArrayAsync();
            }
                       ));
        }
 public static EntityApiBuildContext <TKey, TEntity> SetupFilePipes <TKey, TEntity>(
     this EntityApiBuildContext <TKey, TEntity> apiBuildContext,
     Func <TEntity, Task <IEnumerable <string> > > findFilesFromModel,
     Func <DbContext, TKey, Task <IEnumerable <string> > > findFilesFromDb,
     Func <DbContext, TEntity, Task <IEnumerable <string> > > findReferencedFilesFromDb) where TEntity : class
 => apiBuildContext.SetupFilePipes((sp, model) => findFilesFromModel(model), (sp, db, key) => findFilesFromDb(db, key), (sp, db, model) => findReferencedFilesFromDb(db, model));
 public static EntityApiBuildContext <TKey, TEntity> SetupFilePipes <TKey, TEntity>(this EntityApiBuildContext <TKey, TEntity> apiBuildContext,
                                                                                    Expression <Func <TEntity, string> > property)
     where TEntity : class => apiBuildContext.SetupFilePipes <TKey, TEntity, PlatformDbContext>(property);