public async Task ExplicitModel()
    {
        await using var database = await sqlInstance.Build();

        var dbContext = database.Context;

        await AddData(dbContext);

        var services = BuildServiceCollection();

        services.AddSingleton <DependencySchema>();
        EfGraphQLConventions.RegisterInContainer(
            services,
            userContext => ((UserContextSingleDb <DependencyDbContext>)userContext).DbContext,
            sqlInstance.Model);
        await using var provider = services.BuildServiceProvider();
        using var schema         = provider.GetRequiredService <DependencySchema>();
        var executionOptions = new ExecutionOptions
        {
            Schema      = schema,
            Query       = query,
            UserContext = new UserContextSingleDb <DependencyDbContext>(dbContext),
            Inputs      = null
        };

        await ExecutionResultData(executionOptions);
    }
    public static async Task <object> ExecuteQuery <TDbContext>(
        string query,
        ServiceCollection services,
        TDbContext dbContext,
        Inputs inputs,
        GlobalFilters filters)
        where TDbContext : DbContext
    {
        query = query.Replace("'", "\"");
        EfGraphQLConventions.RegisterInContainer(
            services,
            dbContext,
            userContext => (TDbContext)userContext,
            filters);
        using (var provider = services.BuildServiceProvider())
            using (var schema = new Schema(new FuncDependencyResolver(provider.GetRequiredService)))
            {
                var documentExecuter = new EfDocumentExecuter();

                #region ExecutionOptionsWithFixIdTypeRule
                var executionOptions = new ExecutionOptions
                {
                    Schema          = schema,
                    Query           = query,
                    UserContext     = dbContext,
                    Inputs          = inputs,
                    ValidationRules = FixIdTypeRule.CoreRulesWithIdFix
                };
                #endregion

                var executionResult = await documentExecuter.ExecuteWithErrorCheck(executionOptions);

                return(executionResult.Data);
            }
    }
    public async Task TransientDbContext()
    {
        await using var database = await sqlInstance.Build();

        var dbContext = database.Context;

        await AddData(dbContext);

        var services = BuildServiceCollection();

        services.AddTransient(_ => database.Context);

        EfGraphQLConventions.RegisterInContainer(
            services,
            userContext => ((UserContextSingleDb <DependencyDbContext>)userContext).DbContext);
        await using var provider = services.BuildServiceProvider();
        using var schema         = new DependencySchema(provider);
        var executionOptions = new ExecutionOptions
        {
            Schema      = schema,
            Query       = query,
            UserContext = new UserContextSingleDb <DependencyDbContext>(dbContext),
            Inputs      = null
        };

        await ExecutionResultData(executionOptions);
    }
Exemple #4
0
    public async Task Resolve()
    {
        await using var database = await sqlInstance.Build();

        var parent = new MappingParent();
        var child  = new MappingChild
        {
            Parent = parent
        };
        await database.AddDataUntracked(child, parent);

        var services = new ServiceCollection();

        services.AddSingleton <MappingQuery>();
        EfGraphQLConventions.RegisterInContainer(services, _ => database.NewDbContext(), model: sqlInstance.Model);
        await using var provider = services.BuildServiceProvider();
        var mappingQuery = provider.GetRequiredService <MappingQuery>();

        var resolve = await(Task <IEnumerable <MappingChild> >) mappingQuery.Fields
                      .Single(x => x.Name == "children")
                      .Resolver !
                      .Resolve(new ResolveFieldContext()) !;

        await Verify(resolve);
    }
    public async Task ExplicitModel()
    {
        using (var database = await sqlInstance.Build())
        {
            var dbContext = database.Context;
            await AddData(dbContext);

            var services = BuildServiceCollection();

            EfGraphQLConventions.RegisterInContainer(
                services,
                userContext => (DependencyDbContext)userContext,
                ModelBuilder.Instance);
            using (var provider = services.BuildServiceProvider())
                using (var schema = new DependencySchema(provider))
                {
                    var executionOptions = new ExecutionOptions
                    {
                        Schema      = schema,
                        Query       = query,
                        UserContext = dbContext,
                        Inputs      = null
                    };

                    await ExecutionResultData(executionOptions);
                }
        }
    }
    public static async Task <object> ExecuteQuery <TDbContext>(
        string query,
        ServiceCollection services,
        TDbContext data,
        Inputs?inputs,
        Filters?filters)
        where TDbContext : DbContext
    {
        query = query.Replace("'", "\"");
        EfGraphQLConventions.RegisterInContainer(
            services,
            userContext => data,
            data.Model,
            userContext => filters);
        EfGraphQLConventions.RegisterConnectionTypesInContainer(services);
        await using var provider = services.BuildServiceProvider();
        using var schema         = new Schema(provider);
        var documentExecuter = new EfDocumentExecuter();

        var executionOptions = new ExecutionOptions
        {
            Schema      = schema,
            Query       = query,
            UserContext = new UserContextSingleDb <TDbContext>(data),
            Inputs      = inputs,
        };

        var executionResult = await documentExecuter.ExecuteWithErrorCheck(executionOptions);

        return(executionResult.Data);
    }
Exemple #7
0
    public static async Task <object> ExecuteQuery <TDbContext>(
        string query,
        ServiceCollection services,
        TDbContext dbContext,
        Inputs?inputs,
        Filters?filters)
        where TDbContext : DbContext
    {
        query = query.Replace("'", "\"");
        EfGraphQLConventions.RegisterInContainer(
            services,
            userContext => (TDbContext)((Dictionary <string, object>)userContext)[typeof(TDbContext).Name],
            dbContext.Model,
            userContext => filters);
        EfGraphQLConventions.RegisterConnectionTypesInContainer(services);
        await using var provider = services.BuildServiceProvider();
        using var schema         = new Schema(provider);
        var documentExecuter = new EfDocumentExecuter();

        #region ExecutionOptionsWithFixIdTypeRule
        var executionOptions = new ExecutionOptions
        {
            Schema          = schema,
            Query           = query,
            Inputs          = inputs,
            ValidationRules = FixIdTypeRule.CoreRulesWithIdFix
        };
        executionOptions.UserContext.Add(typeof(TDbContext).Name, dbContext);
        #endregion

        var executionResult = await documentExecuter.ExecuteWithErrorCheck(executionOptions);

        return(executionResult.Data);
    }
    public async Task ScopedDbContext()
    {
        using var database = await sqlInstance.Build();

        var dbContext = database.Context;

        await AddData(dbContext);

        var services = BuildServiceCollection();

        services.AddScoped(x => { return(database.Context); });

        EfGraphQLConventions.RegisterInContainer(
            services,
            userContext => (DependencyDbContext)userContext);
        using var provider = services.BuildServiceProvider();
        using var schema   = new DependencySchema(provider);
        var executionOptions = new ExecutionOptions
        {
            Schema      = schema,
            Query       = query,
            UserContext = dbContext,
            Inputs      = null
        };

        await ExecutionResultData(executionOptions);
    }
Exemple #9
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllers();
            //services.AddDbContext<BlogDbContext>(options =>
            //   options.UseSqlServer(Configuration.GetConnectionString("MainDatabase")));
            services.AddSingleton(_ => { return(BlogDbContextEfFactory.CreateDbContext(Configuration)); });
            EfGraphQLConventions.RegisterInContainer(
                services,
                userContext => { return(BlogDbContextEfFactory.CreateDbContext(Configuration)); });
            services.AddGraphQL(options => options.ExposeExceptions = true);
            services.AddSingleton <MainSchema>();
            services.AddSingleton <MainQuery>();
            services.AddSingleton <CountryGraph>();
            services.AddSingleton <AddressGraph>();
            services.AddSingleton <UserGraph>();
            services.AddSingleton <PostGraph>();

            GraphTypeTypeRegistry.Register <Country, CountryGraph>();
            GraphTypeTypeRegistry.Register <Address, AddressGraph>();
            GraphTypeTypeRegistry.Register <User, UserGraph>();
            GraphTypeTypeRegistry.Register <Post, PostGraph>();


            services.AddSingleton <IDocumentExecuter, EfDocumentExecuter>();
            services.AddSingleton <IDependencyResolver>(
                provider => new FuncDependencyResolver(provider.GetRequiredService));
            services.Configure <KestrelServerOptions>(o => { o.AllowSynchronousIO = true; });
            services.Configure <IISServerOptions>(o => { o.AllowSynchronousIO = true; });
        }
    public void ConfigureServices(IServiceCollection services)
    {
        GraphTypeTypeRegistry.Register <Employee, EmployeeGraph>();
        GraphTypeTypeRegistry.Register <EmployeeSummary, EmployeeSummaryGraph>();
        GraphTypeTypeRegistry.Register <Company, CompanyGraph>();
        services.AddScoped(_ => DbContextBuilder.BuildDbContext());
        EfGraphQLConventions.RegisterInContainer <GraphQlEfSampleDbContext>(
            services,
            model: GraphQlEfSampleDbContext.StaticModel);
        EfGraphQLConventions.RegisterConnectionTypesInContainer(services);

        foreach (var type in GetGraphQlTypes())
        {
            services.AddSingleton(type);
        }

        var graphQl = services.AddGraphQL(
            options => options.ExposeExceptions = true);

        graphQl.AddWebSockets();
        services.AddSingleton <ContextFactory>();
        services.AddSingleton <IDocumentExecuter, EfDocumentExecuter>();
        services.AddSingleton <IDependencyResolver>(
            provider => new FuncDependencyResolver(provider.GetRequiredService));
        services.AddSingleton <ISchema, Schema>();
        var mvc = services.AddMvc(option => option.EnableEndpointRouting = false);

        mvc.SetCompatibilityVersion(CompatibilityVersion.Latest);
        mvc.AddNewtonsoftJson();
    }
Exemple #11
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllers();

            services.AddDbContext <AppDbContext>(
                bd =>
            {
                bd.UseMySql("fake");
            }
                );

            /**
             * GraphQL schema
             */
            // nahradit neskor tymto https://github.com/SimonCropp/GraphQL.EntityFramework/blob/master/doco/configuration.md#connection-types
            EfGraphQLConventions.RegisterConnectionTypesInContainer(services);

            services.AddSingleton <Query>();

            services.AddSingleton <IDocumentExecuter, EfDocumentExecuter>();
            services.AddSingleton <IDocumentWriter, DocumentWriter>();
            services.AddSingleton <ISchema, GraphQLSchema>();

            services.AddSingleton <IDependencyResolver>(x =>
                                                        new FuncDependencyResolver(type => x.GetRequiredService(type)));
        }
Exemple #12
0
    public async Task ScopedDbContext()
    {
        await using var database = await sqlInstance.Build();

        var dbContext = database.Context;

        await AddData(dbContext);

        var services = BuildServiceCollection();

        services.AddScoped(x => database.Context);

        EfGraphQLConventions.RegisterInContainer(
            services,
            userContext => (DependencyDbContext)((Dictionary <string, object>)userContext)["dbContext"]);
        await using var provider = services.BuildServiceProvider();
        using var schema         = new DependencySchema(provider);
        var executionOptions = new ExecutionOptions
        {
            Schema = schema,
            Query  = query,
            Inputs = null
        };

        executionOptions.UserContext.Add("dbContext", dbContext);

        await ExecutionResultData(executionOptions);
    }
Exemple #13
0
    public void ConfigureServices(IServiceCollection services)
    {
        GraphTypeTypeRegistry.Register <Employee, EmployeeGraph>();
        GraphTypeTypeRegistry.Register <EmployeeSummary, EmployeeSummaryGraph>();
        GraphTypeTypeRegistry.Register <Company, CompanyGraph>();
        EfGraphQLConventions.RegisterInContainer <SampleDbContext>(
            services,
            model: SampleDbContext.StaticModel);
        EfGraphQLConventions.RegisterConnectionTypesInContainer(services);

        foreach (var type in GetGraphQlTypes())
        {
            services.AddSingleton(type);
        }
        //TODO: re add for subscriptions
        //var graphQl = services.AddGraphQL(
        //    options => options.ExposeExceptions = true);
        //graphQl.AddWebSockets();

        var dbContextBuilder = new DbContextBuilder();

        services.AddSingleton <IHostedService>(dbContextBuilder);
        services.AddSingleton <Func <SampleDbContext> >(_ => dbContextBuilder.BuildDbContext);
        services.AddScoped(_ => dbContextBuilder.BuildDbContext());
        services.AddSingleton <IDocumentExecuter, EfDocumentExecuter>();
        services.AddSingleton <ISchema, Schema>();
        var mvc = services.AddMvc(option => option.EnableEndpointRouting = false);

        mvc.SetCompatibilityVersion(CompatibilityVersion.Latest);
        mvc.AddNewtonsoftJson();
    }
Exemple #14
0
    public async Task SchemaPrint()
    {
        await using var database = await sqlInstance.Build();

        var dbContext = database.Context;
        var services  = new ServiceCollection();

        services.AddSingleton <Query>();
        services.AddSingleton <Mutation>();
        services.AddSingleton(database.Context);
        foreach (var type in GetGraphQlTypes())
        {
            services.AddSingleton(type);
        }

        EfGraphQLConventions.RegisterInContainer(services, _ => dbContext, dbContext.Model);
        EfGraphQLConventions.RegisterConnectionTypesInContainer(services);
        await using var provider = services.BuildServiceProvider();
        using var schema         = new Schema(provider);

        var printer = new SchemaPrinter(schema);
        var print   = printer.Print();

        await Verify(print);
    }
Exemple #15
0
    public static async Task <object> ExecuteQuery(string queryString, ServiceCollection services, DbContext dataContext, Inputs inputs)
    {
        queryString = queryString.Replace("'", "\"");
        EfGraphQLConventions.RegisterConnectionTypesInContainer(services);
        EfGraphQLConventions.RegisterInContainer(services, dataContext);
        using (var provider = services.BuildServiceProvider())
            using (var schema = new Schema(new FuncDependencyResolver(provider.GetRequiredService)))
            {
                var documentExecuter = new DocumentExecuter();

                var executionOptions = new ExecutionOptions
                {
                    Schema      = schema,
                    Query       = queryString,
                    UserContext = dataContext,
                    Inputs      = inputs
                };

                var executionResult = await documentExecuter.ExecuteAsync(executionOptions).ConfigureAwait(false);

                if (executionResult.Errors != null && executionResult.Errors.Count > 0)
                {
                    if (executionResult.Errors.Count == 1)
                    {
                        throw executionResult.Errors.First();
                    }

                    throw new AggregateException(executionResult.Errors);
                }

                return(executionResult.Data);
            }
    }
    public void ConfigureServices(IServiceCollection services)
    {
        GraphTypeTypeRegistry.Register <Employee, EmployeeGraph>();
        GraphTypeTypeRegistry.Register <EmployeeSummary, EmployeeSummaryGraph>();
        GraphTypeTypeRegistry.Register <Company, CompanyGraph>();

        services.AddScoped(provider => DataContextBuilder.BuildDataContext());

        EfGraphQLConventions.RegisterInContainer(services, DataContextBuilder.Model);

        foreach (var type in GetGraphQlTypes())
        {
            services.AddSingleton(type);
        }

        services.AddGraphQL(options => options.ExposeExceptions = true).AddWebSockets();
        services.AddSingleton <ContextFactory>();
        services.AddSingleton <IDocumentExecuter, EfDocumentExecuter>();
        services.AddSingleton <IDependencyResolver>(
            provider => new FuncDependencyResolver(provider.GetRequiredService));
        services.AddSingleton <ISchema, Schema>();
        var mvc = services.AddMvc();

        mvc.SetCompatibilityVersion(CompatibilityVersion.Latest);
    }
Exemple #17
0
    public static async Task <string> ExecuteQuery <TDbContext>(
        string query,
        ServiceCollection services,
        TDbContext data,
        Inputs?inputs,
        Filters?filters,
        bool disableTracking)
        where TDbContext : DbContext
    {
        query = query.Replace("'", "\"");
        EfGraphQLConventions.RegisterInContainer(
            services,
            _ => data,
            data.Model,
            _ => filters,
            disableTracking);
        EfGraphQLConventions.RegisterConnectionTypesInContainer(services);
        await using var provider = services.BuildServiceProvider();
        using Schema schema      = new(provider);
        EfDocumentExecuter executer = new();

        ExecutionOptions options = new()
        {
            Schema      = schema,
            Query       = query,
            UserContext = new UserContextSingleDb <TDbContext>(data),
            Inputs      = inputs,
        };

        var result = await executer.ExecuteWithErrorCheck(options);

        return(await result.Serialize());
    }
Exemple #18
0
    void RegisterInContainerServiceCollectionUsage(IServiceCollection serviceCollection)
    {
        #region RegisterInContainerServiceCollectionUsage

        EfGraphQLConventions.RegisterInContainer(serviceCollection, MyDataContext.DataModel);

        #endregion
    }
 void RegisterInContainerViaServiceProviderUsage(IServiceCollection serviceCollection)
 {
     #region RegisterInContainerViaServiceProviderUsage
     EfGraphQLConventions.RegisterInContainer(
         serviceCollection,
         userContext => (MyDbContext)userContext);
     #endregion
 }
Exemple #20
0
 void RegisterInContainerExplicit(IServiceCollection serviceCollection)
 {
     #region RegisterInContainer
     EfGraphQLConventions.RegisterInContainer <MyDbContext>(
         serviceCollection,
         model: ModelBuilder.GetInstance());
     #endregion
 }
Exemple #21
0
    public void Add(ServiceCollection services)
    {
        #region add-filter

        var filters = new Filters();
        filters.Add <MyEntity>(
            (userContext, item) => item.Property != "Ignore");
        EfGraphQLConventions.RegisterInContainer <MyDbContext>(
            services,
            resolveFilters: x => filters);

        #endregion
    }
    public void Add(ServiceCollection services, IModel model)
    {
        #region add-filter

        var filters = new GlobalFilters();
        filters.Add <MyEntity>(
            (userContext, item) =>
        {
            return(item.Property != "Ignore");
        });
        EfGraphQLConventions.RegisterInContainer(services, model, filters);

        #endregion
    }
    public async Task SchemaPrint()
    {
        ServiceCollection services = new();

        EfGraphQLConventions.RegisterInContainer <MappingContext>(services, model: sqlInstance.Model);
        services.AddSingleton <MappingChildGraph>();
        services.AddSingleton <MappingParentGraph>();
        services.AddSingleton <MappingSchema>();
        await using var provider = services.BuildServiceProvider();
        var mappingSchema = provider.GetRequiredService <MappingSchema>();

        SchemaPrinter printer = new(mappingSchema);
        var           print   = printer.Print();
        await Verifier.Verify(print);
    }
Exemple #24
0
    public async Task SchemaPrint()
    {
        var graphQlService         = new EfGraphQLService <MappingContext>(sqlInstance.Model, _ => null !);
        ServiceCollection services = new();

        EfGraphQLConventions.RegisterInContainer <MappingContext>(services);
        services.AddSingleton(new MappingChildGraph(graphQlService));
        services.AddSingleton(new MappingParentGraph(graphQlService));
        await using var provider = services.BuildServiceProvider();
        var mappingSchema = new MappingSchema(graphQlService, provider);

        var printer = new SchemaPrinter(mappingSchema);
        var print   = printer.Print();
        await Verifier.Verify(print);
    }
    void RegisterInContainerServiceCollectionUsage(IServiceCollection serviceCollection)
    {
        #region RegisterInContainerServiceCollectionUsage

        var builder = new DbContextOptionsBuilder();
        builder.UseSqlServer("fake");
        using (var context = new MyDbContext(builder.Options))
        {
            EfGraphQLConventions.RegisterInContainer(
                serviceCollection,
                dbContext: context,
                dbContextFromUserContext: userContext => (MyDbContext)userContext);
        }

        #endregion
    }
Exemple #26
0
        private void ConfigureGraphQLInfrastructure(IServiceCollection services, string connectionString)
        {
            using (var context = new NorthwindContext(connectionString))
            {
                EfGraphQLConventions.RegisterInContainer(services, context);
            }

            foreach (var t in GetGraphQlTypes())
            {
                services.AddSingleton(t);
            }

            services.AddSingleton <IDocumentExecuter, DocumentExecuter>();
            services.AddSingleton <IDependencyResolver>(provider => new FuncDependencyResolver(provider.GetRequiredService));
            services.AddSingleton <ISchema, Infrastructure.Schema>();
            services.AddSingleton(typeof(Infrastructure.Strategies.IMutationStrategy <>), typeof(Infrastructure.Strategies.MutationStrategy <>));
        }
    public void ConfigureServices(IServiceCollection services)
    {
        GraphTypeTypeRegistry.Register <Employee, EmployeeGraph>();
        GraphTypeTypeRegistry.Register <EmployeeSummary, EmployeeSummaryGraph>();
        GraphTypeTypeRegistry.Register <Company, CompanyGraph>();

        //services.AddScoped(provider => DbContextBuilder.BuildDbContext());

        //EfGraphQLConventions.RegisterInContainer(
        //    services,
        //    DbContextBuilder.BuildDbContext(),
        //    userContext => (GraphQlEfSampleDbContext) userContext);


        services.AddDbContext <TestContext>(options => options.UseSqlServer("Data Source=VASIC;Initial Catalog=GraphQLEntityFrameworkSample;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False"));

        var optionsBuilder = new DbContextOptionsBuilder <TestContext>();

        optionsBuilder.UseSqlServer("Data Source=VASIC;Initial Catalog=GraphQLEntityFrameworkSample;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False");
        using (var context = new TestContext(optionsBuilder.Options))
        {
            EfGraphQLConventions.RegisterInContainer(
                services,
                context,
                userContext => (TestContext)userContext);
        }



        foreach (var type in GetGraphQlTypes())
        {
            services.AddSingleton(type);
        }

        services.AddGraphQL(options => options.ExposeExceptions = true).AddWebSockets();
        services.AddSingleton <ContextFactory>();
        services.AddSingleton <IDocumentExecuter, EfDocumentExecuter>();
        services.AddSingleton <IDependencyResolver>(
            provider => new FuncDependencyResolver(provider.GetRequiredService));
        services.AddSingleton <ISchema, Schema>();
        var mvc = services.AddMvc();

        mvc.SetCompatibilityVersion(CompatibilityVersion.Latest);
    }
Exemple #28
0
        // This method gets called by the runtime. Use this method to add services to the container.
        // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddDbContext <BlogContext>(options =>
                                                options.UseNpgsql(Configuration.GetSection("Database:ConnectionString").Value));
            services.AddSingleton <IBlogContext, BlogContext>();
            // GraphQL
            GraphTypeTypeRegistry.Register <Post, PostGraph>();
            GraphTypeTypeRegistry.Register <User, UserGraph>();
            EfGraphQLConventions.RegisterInContainer(services, (context) => (context as GraphQLUserContext)?.Context);
            EfGraphQLConventions.RegisterConnectionTypesInContainer(services);
            services.AddSingleton <IDocumentExecuter, EfDocumentExecuter>();
            services.AddSingleton <ISchema, GraphQLSchema>();

            // Import also all the other created Graphs
            foreach (Type type in GetGraphQlTypes())
            {
                services.AddScoped(type);
            }

            services.AddMvc(option => option.EnableEndpointRouting = false);
        }
Exemple #29
0
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddDbContext <Data.TaskContext>(opt => opt.UseSqlServer("Server=(localdb)\\MSSQLLocalDB;Database=Tasks;Trusted_Connection=True;MultipleActiveResultSets=true"));
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
            var serviceProvider = services.BuildServiceProvider();

            EfGraphQLConventions.RegisterConnectionTypesInContainer(services);
            using (var scope = serviceProvider.CreateScope())
                EfGraphQLConventions.RegisterInContainer(services, serviceProvider.GetService <Data.TaskContext>());

            foreach (var type in GetGraphQlTypes())
            {
                services.AddSingleton(type);
            }

            services.AddSingleton <IDocumentExecuter, DocumentExecuter>();
            services.AddSingleton <IDependencyResolver>(
                provider => new FuncDependencyResolver(provider.GetRequiredService)
                );
            services.AddSingleton <ISchema, Schema>();
        }
Exemple #30
0
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddScoped(provider => DataContextBuilder.BuildDataContext());

        using (var myDataContext = DataContextBuilder.BuildDataContext())
        {
            EfGraphQLConventions.RegisterInContainer(services, myDataContext);
        }

        foreach (var type in GetGraphQlTypes())
        {
            services.AddSingleton(type);
        }

        services.AddSingleton <IDocumentExecuter, DocumentExecuter>();
        services.AddSingleton <IDependencyResolver>(
            provider => new FuncDependencyResolver(provider.GetRequiredService));
        services.AddSingleton <ISchema, Schema>();
        var mvc = services.AddMvc();

        mvc.SetCompatibilityVersion(CompatibilityVersion.Latest);
    }