/// <summary> /// Executes the action provided by the user to configure the resources using <see cref="IResourceGraphBuilder"/>. /// Additionally, inspects the EF core database context for models that implement IIdentifiable. /// </summary> public static void ConfigureResources <TContext>(this JsonApiApplicationBuilder builder, Action <IResourceGraphBuilder> resourceGraphBuilder) where TContext : DbContext { builder._resourceGraphBuilder.AddDbContext <TContext>(); builder._usesDbContext = true; builder._services.AddScoped <IDbContextResolver, DbContextResolver <TContext> >(); resourceGraphBuilder?.Invoke(builder._resourceGraphBuilder); }
private static void SetupApplicationBuilder(IServiceCollection services, Action <JsonApiOptions> options, Action <IServiceDiscoveryFacade> discovery, Action <IResourceGraphBuilder> resources, IMvcCoreBuilder mvcBuilder, Type dbContextType) { var applicationBuilder = new JsonApiApplicationBuilder(services, mvcBuilder ?? services.AddMvcCore()); applicationBuilder.ConfigureJsonApiOptions(options); applicationBuilder.ConfigureMvc(dbContextType); applicationBuilder.AutoDiscover(discovery); applicationBuilder.ConfigureResources(resources); applicationBuilder.ConfigureServices(); }
/// <summary> /// Enabling JsonApiDotNetCore using the EF Core DbContext to build the ResourceGraph. /// </summary> public static IServiceCollection AddJsonApi <TDbContext>(this IServiceCollection services, Action <JsonApiOptions> options = null, Action <IServiceDiscoveryFacade> discovery = null, Action <IResourceGraphBuilder> resources = null, IMvcCoreBuilder mvcBuilder = null) where TDbContext : DbContext { var application = new JsonApiApplicationBuilder(services, mvcBuilder ?? services.AddMvcCore()); if (options != null) { application.ConfigureJsonApiOptions(options); } application.ConfigureMvc(); if (discovery != null) { application.AutoDiscover(discovery); } application.ConfigureResources <TDbContext>(resources); application.ConfigureServices(); return(services); }