From a946f012966c52813ebf90a985f592bc97b6ea00 Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Wed, 17 Aug 2022 15:14:55 +1000 Subject: [PATCH 1/4] Update Directory.Build.props --- src/Directory.Build.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Build.props b/src/Directory.Build.props index d166ab6ed..9c10195f8 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -2,7 +2,7 @@ CS1591;NU5104;CS1573 - 17.1.0 + 18.0.0 1.0.0 EntityFrameworkCore, EntityFramework, GraphQL false From 39079eeadee846a87e4b5c9f73ef7fa9b4d8aafd Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Wed, 17 Aug 2022 15:43:16 +1000 Subject: [PATCH 2/4] . --- docs/defining-graphs.md | 26 ++++++++----------- .../GraphQL.EntityFramework.csproj | 2 +- src/GraphQL.EntityFramework/Mapping/Mapper.cs | 4 +-- .../Where/Graphs/WhereExpressionGraph.cs | 12 +++++---- src/SampleWeb.Tests/SampleWeb.Tests.csproj | 2 +- src/SampleWeb/Query.cs | 17 +++++------- src/SampleWeb/SampleWeb.csproj | 4 +-- src/Snippets/ResolveDbContextQuery.cs | 5 ++-- src/Snippets/Snippets.csproj | 2 +- src/Tests/Tests.csproj | 4 +-- 10 files changed, 36 insertions(+), 42 deletions(-) diff --git a/docs/defining-graphs.md b/docs/defining-graphs.md index 933941579..838719402 100644 --- a/docs/defining-graphs.md +++ b/docs/defining-graphs.md @@ -308,15 +308,9 @@ In some cases, it may be necessary to use `Field` instead of `AddQueryField`/`Ad ```cs -Field>( - name: "employeeSummary", - arguments: new( - new QueryArgument> - { - Name = "where" - } - ), - resolve: context => +Field>("employeeSummary") + .Argument>("where") + .Resolve(context => { var dbContext = ResolveDbContext(context); IQueryable query = dbContext.Employees; @@ -330,7 +324,10 @@ Field>( } return from q in query - group q by new {q.CompanyId} + group q by new + { + q.CompanyId + } into g select new EmployeeSummary { @@ -339,7 +336,7 @@ Field>( }; }); ``` -snippet source | anchor +snippet source | anchor @@ -355,9 +352,8 @@ public class Query : { public Query(IEfGraphQLService graphQlService) : base(graphQlService) => - Field>( - name: "oldCompanies", - resolve: context => + Field>("oldCompanies") + .Resolve(context => { // uses the base QueryGraphType to resolve the db context var dbContext = ResolveDbContext(context); @@ -365,7 +361,7 @@ public class Query : }); } ``` -snippet source | anchor +snippet source | anchor diff --git a/src/GraphQL.EntityFramework/GraphQL.EntityFramework.csproj b/src/GraphQL.EntityFramework/GraphQL.EntityFramework.csproj index bf459516e..60f56ffba 100644 --- a/src/GraphQL.EntityFramework/GraphQL.EntityFramework.csproj +++ b/src/GraphQL.EntityFramework/GraphQL.EntityFramework.csproj @@ -7,7 +7,7 @@ - + diff --git a/src/GraphQL.EntityFramework/Mapping/Mapper.cs b/src/GraphQL.EntityFramework/Mapping/Mapper.cs index 4f6afe9b7..be31b845f 100644 --- a/src/GraphQL.EntityFramework/Mapping/Mapper.cs +++ b/src/GraphQL.EntityFramework/Mapping/Mapper.cs @@ -165,8 +165,8 @@ static void AddMember(ComplexGraphType graph, PropertyInfo pro { var (compile, propertyGraphType) = Compile(property); var resolver = new SimpleFieldResolver(compile); - var graphQlField = graph.Field(type: propertyGraphType, name: property.Name); - graphQlField.Resolver = resolver; + graph.Field(type: propertyGraphType, name: property.Name) + .Resolve(resolver); } static bool ShouldIgnore(IComplexGraphType graphType, string name, Type propertyType, IReadOnlyList? localIgnores = null) diff --git a/src/GraphQL.EntityFramework/Where/Graphs/WhereExpressionGraph.cs b/src/GraphQL.EntityFramework/Where/Graphs/WhereExpressionGraph.cs index e10f75e9a..0ee55ec8a 100644 --- a/src/GraphQL.EntityFramework/Where/Graphs/WhereExpressionGraph.cs +++ b/src/GraphQL.EntityFramework/Where/Graphs/WhereExpressionGraph.cs @@ -9,12 +9,14 @@ public WhereExpressionGraph() { Name = nameof(WhereExpression); Field(x => x.Path, true); - Field("comparison", null, null, _ => _.Source.Comparison); + Field("comparison") + .Resolve(_ => _.Source.Comparison); Field(x => x.Negate, true); - Field>("case", null, null, _ => _.Source.Case); + Field>("case") + .Resolve( _ => _.Source.Case); Field(x => x.Value, true); - Field("connector", null, null, _ => _.Source.Connector); - Field>( - name: "GroupedExpressions"); + Field("connector") + .Resolve(_ => _.Source.Connector); + Field>("GroupedExpressions"); } } \ No newline at end of file diff --git a/src/SampleWeb.Tests/SampleWeb.Tests.csproj b/src/SampleWeb.Tests/SampleWeb.Tests.csproj index b9581d737..aea0fff17 100644 --- a/src/SampleWeb.Tests/SampleWeb.Tests.csproj +++ b/src/SampleWeb.Tests/SampleWeb.Tests.csproj @@ -3,7 +3,7 @@ net6.0 - + diff --git a/src/SampleWeb/Query.cs b/src/SampleWeb/Query.cs index 404b0537c..af52c57fc 100644 --- a/src/SampleWeb/Query.cs +++ b/src/SampleWeb/Query.cs @@ -52,15 +52,9 @@ public Query(IEfGraphQLService efGraphQlService) : #region ManuallyApplyWhere - Field>( - name: "employeeSummary", - arguments: new( - new QueryArgument> - { - Name = "where" - } - ), - resolve: context => + Field>("employeeSummary") + .Argument>("where") + .Resolve(context => { var dbContext = ResolveDbContext(context); IQueryable query = dbContext.Employees; @@ -74,7 +68,10 @@ public Query(IEfGraphQLService efGraphQlService) : } return from q in query - group q by new {q.CompanyId} + group q by new + { + q.CompanyId + } into g select new EmployeeSummary { diff --git a/src/SampleWeb/SampleWeb.csproj b/src/SampleWeb/SampleWeb.csproj index 47a069710..8bfe4c222 100644 --- a/src/SampleWeb/SampleWeb.csproj +++ b/src/SampleWeb/SampleWeb.csproj @@ -6,8 +6,8 @@ - - + + diff --git a/src/Snippets/ResolveDbContextQuery.cs b/src/Snippets/ResolveDbContextQuery.cs index 838a34ab3..7e069bca2 100644 --- a/src/Snippets/ResolveDbContextQuery.cs +++ b/src/Snippets/ResolveDbContextQuery.cs @@ -11,9 +11,8 @@ public class Query : { public Query(IEfGraphQLService graphQlService) : base(graphQlService) => - Field>( - name: "oldCompanies", - resolve: context => + Field>("oldCompanies") + .Resolve(context => { // uses the base QueryGraphType to resolve the db context var dbContext = ResolveDbContext(context); diff --git a/src/Snippets/Snippets.csproj b/src/Snippets/Snippets.csproj index 9c18bd6ea..8dc88ef21 100644 --- a/src/Snippets/Snippets.csproj +++ b/src/Snippets/Snippets.csproj @@ -3,7 +3,7 @@ net6.0 - + diff --git a/src/Tests/Tests.csproj b/src/Tests/Tests.csproj index 08e0ea014..7417debb8 100644 --- a/src/Tests/Tests.csproj +++ b/src/Tests/Tests.csproj @@ -4,8 +4,8 @@ EF1000 - - + + From 278c4ce5e02210b8a477761950e1eca761069290 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Wed, 17 Aug 2022 06:05:53 +0000 Subject: [PATCH 3/4] Docs changes --- docs/configuration.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/configuration.md b/docs/configuration.md index cf2a8efb8..d9371df66 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -615,6 +615,7 @@ public static async Task ExecuteWithErrorCheck( { var executionResult = await executer.ExecuteAsync(options); + options.ThrowOnUnhandledException = true; var errors = executionResult.Errors; if (errors is { Count: > 0 }) { @@ -629,7 +630,7 @@ public static async Task ExecuteWithErrorCheck( return executionResult; } ``` -snippet source | anchor +snippet source | anchor From 28a2f7cab92a7bf7f866c78072e6ab85e60279a0 Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Wed, 17 Aug 2022 16:34:51 +1000 Subject: [PATCH 4/4] Update ArgumentGraphs.cs --- .../Where/Graphs/ArgumentGraphs.cs | 28 ++++--------------- 1 file changed, 5 insertions(+), 23 deletions(-) diff --git a/src/GraphQL.EntityFramework/Where/Graphs/ArgumentGraphs.cs b/src/GraphQL.EntityFramework/Where/Graphs/ArgumentGraphs.cs index f77fca3b1..25655add8 100644 --- a/src/GraphQL.EntityFramework/Where/Graphs/ArgumentGraphs.cs +++ b/src/GraphQL.EntityFramework/Where/Graphs/ArgumentGraphs.cs @@ -4,30 +4,12 @@ static class ArgumentGraphs { - static Dictionary entries = new(); - - [ModuleInitializer] - public static void Initialize() - { - Add>(); - Add(); - Add(); - Add(); - Add(); - } - public static void RegisterInContainer(IServiceCollection services) { - foreach (var entry in entries) - { - services.AddSingleton(entry.Key, entry.Value); - } - } - - static void Add() - where T : GraphType, new() - { - var value = new T(); - entries.Add(typeof(T), value); + services.AddSingleton>(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); } } \ No newline at end of file