diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json
index 920d500aa9..2f63c9a5b3 100644
--- a/.config/dotnet-tools.json
+++ b/.config/dotnet-tools.json
@@ -3,7 +3,7 @@
"isRoot": true,
"tools": {
"jetbrains.resharper.globaltools": {
- "version": "2024.1.4",
+ "version": "2024.2.5",
"commands": [
"jb"
],
@@ -17,7 +17,7 @@
"rollForward": false
},
"dotnet-reportgenerator-globaltool": {
- "version": "5.3.7",
+ "version": "5.3.10",
"commands": [
"reportgenerator"
],
@@ -31,7 +31,7 @@
"rollForward": false
},
"microsoft.openapi.kiota": {
- "version": "1.15.0",
+ "version": "1.18.0",
"commands": [
"kiota"
],
diff --git a/.editorconfig b/.editorconfig
index 5a036d1797..37fda299fb 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -4,60 +4,119 @@ root = true
[*]
indent_style = space
indent_size = 4
+tab-width = 4
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
-[*.{config,csproj,css,js,json,props,ruleset,xslt,html}]
+[*.{config,csproj,css,js,json,props,targets,xml,ruleset,xsd,xslt,html,yml,yaml}]
indent_size = 2
+tab-width = 2
+max_line_length = 160
+
+[*.{cs,cshtml,ascx,aspx}]
-[*.{cs}]
#### C#/.NET Coding Conventions ####
+# Default severity for IDE* analyzers with category 'Style'
+# Note: specific rules below use severity silent, because Resharper code cleanup auto-fixes them.
+dotnet_analyzer_diagnostic.category-Style.severity = warning
+
# 'using' directive preferences
dotnet_sort_system_directives_first = true
-csharp_using_directive_placement = outside_namespace:suggestion
+csharp_using_directive_placement = outside_namespace:silent
+# IDE0005: Remove unnecessary import
+dotnet_diagnostic.IDE0005.severity = silent
# Namespace declarations
-csharp_style_namespace_declarations = file_scoped:suggestion
+csharp_style_namespace_declarations = file_scoped:silent
+# IDE0160: Use block-scoped namespace
+dotnet_diagnostic.IDE0160.severity = silent
+# IDE0161: Use file-scoped namespace
+dotnet_diagnostic.IDE0161.severity = silent
# this. preferences
-dotnet_style_qualification_for_field = false:suggestion
-dotnet_style_qualification_for_property = false:suggestion
-dotnet_style_qualification_for_method = false:suggestion
-dotnet_style_qualification_for_event = false:suggestion
+dotnet_style_qualification_for_field = false:silent
+dotnet_style_qualification_for_property = false:silent
+dotnet_style_qualification_for_method = false:silent
+dotnet_style_qualification_for_event = false:silent
+# IDE0003: Remove this or Me qualification
+dotnet_diagnostic.IDE0003.severity = silent
+# IDE0009: Add this or Me qualification
+dotnet_diagnostic.IDE0009.severity = silent
# Language keywords vs BCL types preferences
-dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion
-dotnet_style_predefined_type_for_member_access = true:suggestion
+dotnet_style_predefined_type_for_locals_parameters_members = true:silent
+dotnet_style_predefined_type_for_member_access = true:silent
+# IDE0049: Use language keywords instead of framework type names for type references
+dotnet_diagnostic.IDE0049.severity = silent
# Modifier preferences
-dotnet_style_require_accessibility_modifiers = for_non_interface_members:suggestion
-csharp_preferred_modifier_order = public, private, protected, internal, new, static, abstract, virtual, sealed, readonly, override, extern, unsafe, volatile, async:suggestion
-csharp_style_pattern_local_over_anonymous_function = false:silent
+dotnet_style_require_accessibility_modifiers = for_non_interface_members:silent
+# IDE0040: Add accessibility modifiers
+dotnet_diagnostic.IDE0040.severity = silent
+csharp_preferred_modifier_order = public, private, protected, internal, new, static, abstract, virtual, sealed, readonly, override, extern, unsafe, volatile, async:silent
+# IDE0036: Order modifiers
+dotnet_diagnostic.IDE0036.severity = silent
# Expression-level preferences
dotnet_style_operator_placement_when_wrapping = end_of_line
-dotnet_style_prefer_auto_properties = true:suggestion
-dotnet_style_prefer_conditional_expression_over_assignment = true:suggestion
-dotnet_style_prefer_conditional_expression_over_return = true:suggestion
-csharp_style_unused_value_expression_statement_preference = discard_variable:suggestion
+dotnet_style_prefer_auto_properties = true:silent
+# IDE0032: Use auto property
+dotnet_diagnostic.IDE0032.severity = silent
+dotnet_style_prefer_conditional_expression_over_assignment = true:silent
+# IDE0045: Use conditional expression for assignment
+dotnet_diagnostic.IDE0045.severity = silent
+dotnet_style_prefer_conditional_expression_over_return = true:silent
+# IDE0046: Use conditional expression for return
+dotnet_diagnostic.IDE0046.severity = silent
+csharp_style_unused_value_expression_statement_preference = discard_variable:silent
+# IDE0058: Remove unused expression value
+dotnet_diagnostic.IDE0058.severity = silent
+
+# Collection expression preferences (note: partially turned off in Directory.Build.props)
+dotnet_style_prefer_collection_expression = when_types_exactly_match
# Parameter preferences
-dotnet_code_quality_unused_parameters = non_public:suggestion
+dotnet_code_quality_unused_parameters = non_public
+
+# Local functions vs lambdas
+csharp_style_prefer_local_over_anonymous_function = false:silent
+# IDE0039: Use local function instead of lambda
+dotnet_diagnostic.IDE0039.severity = silent
# Expression-bodied members
-csharp_style_expression_bodied_accessors = true:suggestion
-csharp_style_expression_bodied_constructors = false:suggestion
-csharp_style_expression_bodied_indexers = true:suggestion
-csharp_style_expression_bodied_lambdas = true:suggestion
-csharp_style_expression_bodied_local_functions = false:suggestion
-csharp_style_expression_bodied_methods = false:suggestion
-csharp_style_expression_bodied_operators = false:suggestion
-csharp_style_expression_bodied_properties = true:suggestion
+csharp_style_expression_bodied_accessors = true:silent
+# IDE0027: Use expression body for accessors
+dotnet_diagnostic.IDE0027.severity = silent
+csharp_style_expression_bodied_constructors = false:silent
+# IDE0021: Use expression body for constructors
+dotnet_diagnostic.IDE0021.severity = silent
+csharp_style_expression_bodied_indexers = true:silent
+# IDE0026: Use expression body for indexers
+dotnet_diagnostic.IDE0026.severity = silent
+csharp_style_expression_bodied_lambdas = true:silent
+# IDE0053: Use expression body for lambdas
+dotnet_diagnostic.IDE0053.severity = silent
+csharp_style_expression_bodied_local_functions = false:silent
+# IDE0061: Use expression body for local functions
+dotnet_diagnostic.IDE0061.severity = silent
+csharp_style_expression_bodied_methods = false:silent
+# IDE0022: Use expression body for methods
+dotnet_diagnostic.IDE0022.severity = silent
+csharp_style_expression_bodied_operators = false:silent
+# IDE0023: Use expression body for conversion operators
+dotnet_diagnostic.IDE0023.severity = silent
+# IDE0024: Use expression body for operators
+dotnet_diagnostic.IDE0024.severity = silent
+csharp_style_expression_bodied_properties = true:silent
+# IDE0025: Use expression body for properties
+dotnet_diagnostic.IDE0025.severity = silent
# Code-block preferences
-csharp_prefer_braces = true:suggestion
+csharp_prefer_braces = true:silent
+# IDE0011: Add braces
+dotnet_diagnostic.IDE0011.severity = silent
# Indentation preferences
csharp_indent_case_contents_when_block = false
@@ -66,19 +125,42 @@ csharp_indent_case_contents_when_block = false
csharp_preserve_single_line_statements = false
# 'var' usage preferences
-csharp_style_var_for_built_in_types = false:none
-csharp_style_var_when_type_is_apparent = true:none
-csharp_style_var_elsewhere = false:none
+csharp_style_var_for_built_in_types = false:silent
+csharp_style_var_when_type_is_apparent = true:silent
+csharp_style_var_elsewhere = false:silent
+# IDE0007: Use var instead of explicit type
+dotnet_diagnostic.IDE0007.severity = silent
+# IDE0008: Use explicit type instead of var
+dotnet_diagnostic.IDE0008.severity = silent
# Parentheses preferences
-dotnet_style_parentheses_in_arithmetic_binary_operators = never_if_unnecessary:suggestion
-dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:suggestion
-dotnet_style_parentheses_in_relational_binary_operators = never_if_unnecessary:suggestion
-
-# Expression value is never used
-dotnet_diagnostic.IDE0058.severity = none
-
-#### Naming Style ####
+dotnet_style_parentheses_in_arithmetic_binary_operators = never_if_unnecessary:silent
+dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:silent
+dotnet_style_parentheses_in_relational_binary_operators = never_if_unnecessary:silent
+# IDE0047: Remove unnecessary parentheses
+dotnet_diagnostic.IDE0047.severity = silent
+# IDE0048: Add parentheses for clarity
+dotnet_diagnostic.IDE0048.severity = silent
+
+# IDE0010: Add missing cases to switch statement
+dotnet_diagnostic.IDE0010.severity = silent
+# IDE0072: Add missing cases to switch expression
+dotnet_diagnostic.IDE0072.severity = silent
+
+# IDE0029: Null check can be simplified
+dotnet_diagnostic.IDE0029.severity = silent
+# IDE0030: Null check can be simplified
+dotnet_diagnostic.IDE0030.severity = silent
+# IDE0270: Null check can be simplified
+dotnet_diagnostic.IDE0270.severity = silent
+
+# JSON002: Probable JSON string detected
+dotnet_diagnostic.JSON002.severity = silent
+
+# CA1062: Validate arguments of public methods
+dotnet_code_quality.CA1062.excluded_symbol_names = Accept|DefaultVisit|Visit*|Apply*
+
+#### .NET Naming Style ####
dotnet_diagnostic.IDE1006.severity = warning
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index aa52764416..beb6e779ed 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -1,24 +1,24 @@
version: 2
updates:
-- package-ecosystem: "github-actions"
- directory: "/"
- schedule:
- interval: "weekly"
- pull-request-branch-name:
- separator: "-"
-- package-ecosystem: nuget
- directory: "/"
- schedule:
- interval: daily
- pull-request-branch-name:
- separator: "-"
- open-pull-requests-limit: 25
- ignore:
- # Block updates to all exposed dependencies of the NuGet packages we produce, as updating them would be a breaking change.
- - dependency-name: 'Ben.Demystifier'
- - dependency-name: 'Humanizer*'
- - dependency-name: 'Microsoft.CodeAnalysis*'
- - dependency-name: 'Microsoft.EntityFrameworkCore*'
- # Block major updates of packages that require a matching .NET version.
- - dependency-name: 'Microsoft.AspNetCore*'
- update-types: ["version-update:semver-major"]
+ - package-ecosystem: "github-actions"
+ directory: "/"
+ schedule:
+ interval: "weekly"
+ pull-request-branch-name:
+ separator: "-"
+ - package-ecosystem: nuget
+ directory: "/"
+ schedule:
+ interval: daily
+ pull-request-branch-name:
+ separator: "-"
+ open-pull-requests-limit: 25
+ ignore:
+ # Block updates to all exposed dependencies of the NuGet packages we produce, as updating them would be a breaking change.
+ - dependency-name: "Ben.Demystifier"
+ - dependency-name: "Humanizer*"
+ - dependency-name: "Microsoft.CodeAnalysis*"
+ - dependency-name: "Microsoft.EntityFrameworkCore*"
+ # Block major updates of packages that require a matching .NET version.
+ - dependency-name: "Microsoft.AspNetCore*"
+ update-types: ["version-update:semver-major"]
diff --git a/CodingGuidelines.ruleset b/CodingGuidelines.ruleset
index e647ad9e58..b29d7423b4 100644
--- a/CodingGuidelines.ruleset
+++ b/CodingGuidelines.ruleset
@@ -1,32 +1,54 @@
-
+
+
+
-
-
-
-
-
-
+
+
-
-
-
+
+
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Directory.Build.props b/Directory.Build.props
index 375ee5066f..6c68a15073 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -1,4 +1,29 @@
+
+ enable
+ latest
+ enable
+ false
+ false
+ true
+ Recommended
+ $(MSBuildThisFileDirectory)CodingGuidelines.ruleset
+ $(MSBuildThisFileDirectory)tests.runsettings
+ 5.6.1
+
+
+
+
+ IDE0028;IDE0300;IDE0301;IDE0302;IDE0303;IDE0304;IDE0305
+ $(NoWarn);$(UseCollectionExpressionRules)
+
+
$(NoWarn);AV2210
@@ -13,20 +38,23 @@
true
+
+ $(NoWarn);CA1707;CA1062
+
+
+
+ $(NoWarn);CA1062
+
+
+
+
+ $(NoWarn);SYSLIB1006
+
+
-
+
-
-
- enable
- latest
- enable
- false
- false
- $(MSBuildThisFileDirectory)CodingGuidelines.ruleset
- $(MSBuildThisFileDirectory)tests.runsettings
- 5.6.1
-
diff --git a/JsonApiDotNetCore.sln.DotSettings b/JsonApiDotNetCore.sln.DotSettings
index 741a055a74..31abaa8dcb 100644
--- a/JsonApiDotNetCore.sln.DotSettings
+++ b/JsonApiDotNetCore.sln.DotSettings
@@ -85,6 +85,7 @@ JsonApiDotNetCore.ArgumentGuard.NotNull($EXPR$);
SUGGESTION
SUGGESTION
WARNING
+ DO_NOT_SHOW
WARNING
WARNING
WARNING
@@ -103,6 +104,7 @@ JsonApiDotNetCore.ArgumentGuard.NotNull($EXPR$);
WARNING
True
SUGGESTION
+ False
<?xml version="1.0" encoding="utf-16"?><Profile name="JADNC Full Cleanup"><XMLReformatCode>True</XMLReformatCode><CSCodeStyleAttributes ArrangeTypeAccessModifier="True" ArrangeTypeMemberAccessModifier="True" SortModifiers="True" RemoveRedundantParentheses="True" AddMissingParentheses="True" ArrangeBraces="True" ArrangeAttributes="True" ArrangeArgumentsStyle="True" ArrangeCodeBodyStyle="True" ArrangeVarStyle="True" ArrangeTrailingCommas="True" ArrangeObjectCreation="True" ArrangeDefaultValue="True" ArrangeNamespaces="True" ArrangeNullCheckingPattern="True" /><CssAlphabetizeProperties>True</CssAlphabetizeProperties><JsInsertSemicolon>True</JsInsertSemicolon><FormatAttributeQuoteDescriptor>True</FormatAttributeQuoteDescriptor><CorrectVariableKindsDescriptor>True</CorrectVariableKindsDescriptor><VariablesToInnerScopesDescriptor>True</VariablesToInnerScopesDescriptor><StringToTemplatesDescriptor>True</StringToTemplatesDescriptor><JsReformatCode>True</JsReformatCode><JsFormatDocComments>True</JsFormatDocComments><RemoveRedundantQualifiersTs>True</RemoveRedundantQualifiersTs><OptimizeImportsTs>True</OptimizeImportsTs><OptimizeReferenceCommentsTs>True</OptimizeReferenceCommentsTs><PublicModifierStyleTs>True</PublicModifierStyleTs><ExplicitAnyTs>True</ExplicitAnyTs><TypeAnnotationStyleTs>True</TypeAnnotationStyleTs><RelativePathStyleTs>True</RelativePathStyleTs><AsInsteadOfCastTs>True</AsInsteadOfCastTs><HtmlReformatCode>True</HtmlReformatCode><AspOptimizeRegisterDirectives>True</AspOptimizeRegisterDirectives><RemoveCodeRedundancies>True</RemoveCodeRedundancies><CSUseAutoProperty>True</CSUseAutoProperty><CSMakeFieldReadonly>True</CSMakeFieldReadonly><CSMakeAutoPropertyGetOnly>True</CSMakeAutoPropertyGetOnly><CSArrangeQualifiers>True</CSArrangeQualifiers><CSFixBuiltinTypeReferences>True</CSFixBuiltinTypeReferences><CssReformatCode>True</CssReformatCode><CSOptimizeUsings><OptimizeUsings>True</OptimizeUsings></CSOptimizeUsings><CSShortenReferences>True</CSShortenReferences><CSReformatCode>True</CSReformatCode><CSharpFormatDocComments>True</CSharpFormatDocComments><CSReorderTypeMembers>True</CSReorderTypeMembers><XAMLCollapseEmptyTags>False</XAMLCollapseEmptyTags><CSReformatInactiveBranches>True</CSReformatInactiveBranches></Profile>
JADNC Full Cleanup
Required
@@ -141,6 +143,7 @@ JsonApiDotNetCore.ArgumentGuard.NotNull($EXPR$);
NEVER
False
NEVER
+ False
False
False
NEVER
@@ -599,6 +602,7 @@ JsonApiDotNetCore.ArgumentGuard.NotNull($EXPR$);
True
True
True
+ True
True
True
True
diff --git a/WarningSeverities.DotSettings b/WarningSeverities.DotSettings
index 060df315df..5b64971520 100644
--- a/WarningSeverities.DotSettings
+++ b/WarningSeverities.DotSettings
@@ -1,4 +1,5 @@
+ WARNING
WARNING
WARNING
WARNING
@@ -197,7 +198,6 @@
WARNING
WARNING
WARNING
- WARNING
WARNING
WARNING
WARNING
diff --git a/benchmarks/Deserialization/DeserializationBenchmarkBase.cs b/benchmarks/Deserialization/DeserializationBenchmarkBase.cs
index bbf746d1a8..4febabba1a 100644
--- a/benchmarks/Deserialization/DeserializationBenchmarkBase.cs
+++ b/benchmarks/Deserialization/DeserializationBenchmarkBase.cs
@@ -11,10 +11,12 @@
namespace Benchmarks.Deserialization;
-public abstract class DeserializationBenchmarkBase
+public abstract class DeserializationBenchmarkBase : IDisposable
{
- protected readonly JsonSerializerOptions SerializerReadOptions;
- protected readonly DocumentAdapter DocumentAdapter;
+ private readonly ServiceContainer _serviceProvider = new();
+
+ protected JsonSerializerOptions SerializerReadOptions { get; }
+ protected DocumentAdapter DocumentAdapter { get; }
protected DeserializationBenchmarkBase()
{
@@ -23,12 +25,11 @@ protected DeserializationBenchmarkBase()
options.SerializerOptions.Converters.Add(new ResourceObjectConverter(resourceGraph));
SerializerReadOptions = ((IJsonApiOptions)options).SerializerReadOptions;
- var serviceContainer = new ServiceContainer();
- var resourceFactory = new ResourceFactory(serviceContainer);
- var resourceDefinitionAccessor = new ResourceDefinitionAccessor(resourceGraph, serviceContainer);
+ var resourceFactory = new ResourceFactory(_serviceProvider);
+ var resourceDefinitionAccessor = new ResourceDefinitionAccessor(resourceGraph, _serviceProvider);
- serviceContainer.AddService(typeof(IResourceDefinitionAccessor), resourceDefinitionAccessor);
- serviceContainer.AddService(typeof(IResourceDefinition), new JsonApiResourceDefinition(resourceGraph));
+ _serviceProvider.AddService(typeof(IResourceDefinitionAccessor), resourceDefinitionAccessor);
+ _serviceProvider.AddService(typeof(IResourceDefinition), new JsonApiResourceDefinition(resourceGraph));
// ReSharper disable once VirtualMemberCallInConstructor
JsonApiRequest request = CreateJsonApiRequest(resourceGraph);
@@ -53,6 +54,22 @@ protected DeserializationBenchmarkBase()
protected abstract JsonApiRequest CreateJsonApiRequest(IResourceGraph resourceGraph);
+ public void Dispose()
+ {
+ Dispose(true);
+ GC.SuppressFinalize(this);
+ }
+
+#pragma warning disable CA1063 // Implement IDisposable Correctly
+ private void Dispose(bool disposing)
+#pragma warning restore CA1063 // Implement IDisposable Correctly
+ {
+ if (disposing)
+ {
+ _serviceProvider.Dispose();
+ }
+ }
+
[UsedImplicitly(ImplicitUseTargetFlags.Members)]
public sealed class IncomingResource : Identifiable
{
diff --git a/benchmarks/Program.cs b/benchmarks/Program.cs
index b1e3307931..04d5fa1eaa 100644
--- a/benchmarks/Program.cs
+++ b/benchmarks/Program.cs
@@ -3,20 +3,12 @@
using Benchmarks.QueryString;
using Benchmarks.Serialization;
-namespace Benchmarks;
+var switcher = new BenchmarkSwitcher([
+ typeof(ResourceDeserializationBenchmarks),
+ typeof(OperationsDeserializationBenchmarks),
+ typeof(ResourceSerializationBenchmarks),
+ typeof(OperationsSerializationBenchmarks),
+ typeof(QueryStringParserBenchmarks)
+]);
-internal static class Program
-{
- private static void Main(string[] args)
- {
- var switcher = new BenchmarkSwitcher([
- typeof(ResourceDeserializationBenchmarks),
- typeof(OperationsDeserializationBenchmarks),
- typeof(ResourceSerializationBenchmarks),
- typeof(OperationsSerializationBenchmarks),
- typeof(QueryStringParserBenchmarks)
- ]);
-
- switcher.Run(args);
- }
-}
+switcher.Run(args);
diff --git a/benchmarks/QueryString/QueryStringParserBenchmarks.cs b/benchmarks/QueryString/QueryStringParserBenchmarks.cs
index 0b2f88134a..548c08d532 100644
--- a/benchmarks/QueryString/QueryStringParserBenchmarks.cs
+++ b/benchmarks/QueryString/QueryStringParserBenchmarks.cs
@@ -14,8 +14,9 @@ namespace Benchmarks.QueryString;
[MarkdownExporter]
[SimpleJob(3, 10, 20)]
[MemoryDiagnoser]
-public class QueryStringParserBenchmarks
+public class QueryStringParserBenchmarks : IDisposable
{
+ private readonly ServiceContainer _serviceProvider = new();
private readonly FakeRequestQueryStringAccessor _queryStringAccessor = new();
private readonly QueryStringReader _queryStringReader;
@@ -34,7 +35,7 @@ public QueryStringParserBenchmarks()
IsCollection = true
};
- var resourceFactory = new ResourceFactory(new ServiceContainer());
+ var resourceFactory = new ResourceFactory(_serviceProvider);
var includeParser = new IncludeParser(options);
var includeReader = new IncludeQueryStringParameterReader(includeParser, request, resourceGraph);
@@ -92,4 +93,20 @@ public void ComplexQuery()
_queryStringAccessor.SetQueryString(queryString);
_queryStringReader.ReadAll(null);
}
+
+ public void Dispose()
+ {
+ Dispose(true);
+ GC.SuppressFinalize(this);
+ }
+
+#pragma warning disable CA1063 // Implement IDisposable Correctly
+ private void Dispose(bool disposing)
+#pragma warning restore CA1063 // Implement IDisposable Correctly
+ {
+ if (disposing)
+ {
+ _serviceProvider.Dispose();
+ }
+ }
}
diff --git a/benchmarks/Serialization/OperationsSerializationBenchmarks.cs b/benchmarks/Serialization/OperationsSerializationBenchmarks.cs
index 458c4eecae..8c4a00b6da 100644
--- a/benchmarks/Serialization/OperationsSerializationBenchmarks.cs
+++ b/benchmarks/Serialization/OperationsSerializationBenchmarks.cs
@@ -13,7 +13,7 @@ namespace Benchmarks.Serialization;
// ReSharper disable once ClassCanBeSealed.Global
public class OperationsSerializationBenchmarks : SerializationBenchmarkBase
{
- private readonly IEnumerable _responseOperations;
+ private readonly List _responseOperations;
public OperationsSerializationBenchmarks()
{
@@ -23,7 +23,7 @@ public OperationsSerializationBenchmarks()
_responseOperations = CreateResponseOperations(request);
}
- private static IEnumerable CreateResponseOperations(IJsonApiRequest request)
+ private static List CreateResponseOperations(IJsonApiRequest request)
{
var resource1 = new OutgoingResource
{
@@ -102,14 +102,14 @@ private static IEnumerable CreateResponseOperations(IJsonApi
var targetedFields = new TargetedFields();
- return new List
- {
- new(resource1, targetedFields, request),
- new(resource2, targetedFields, request),
- new(resource3, targetedFields, request),
- new(resource4, targetedFields, request),
- new(resource5, targetedFields, request)
- };
+ return
+ [
+ new OperationContainer(resource1, targetedFields, request),
+ new OperationContainer(resource2, targetedFields, request),
+ new OperationContainer(resource3, targetedFields, request),
+ new OperationContainer(resource4, targetedFields, request),
+ new OperationContainer(resource5, targetedFields, request)
+ ];
}
[Benchmark]
diff --git a/benchmarks/Serialization/ResourceSerializationBenchmarks.cs b/benchmarks/Serialization/ResourceSerializationBenchmarks.cs
index a2d76b87b1..6f979e86b9 100644
--- a/benchmarks/Serialization/ResourceSerializationBenchmarks.cs
+++ b/benchmarks/Serialization/ResourceSerializationBenchmarks.cs
@@ -1,7 +1,6 @@
using System.Collections.Immutable;
using System.Text.Json;
using BenchmarkDotNet.Attributes;
-using JsonApiDotNetCore;
using JsonApiDotNetCore.Configuration;
using JsonApiDotNetCore.Middleware;
using JsonApiDotNetCore.Queries;
@@ -97,12 +96,17 @@ private static OutgoingResource CreateResponseResource()
resource1.Single2 = resource2;
resource2.Single3 = resource3;
- resource3.Multi4 = resource4.AsHashSet();
- resource4.Multi5 = resource5.AsHashSet();
+ resource3.Multi4 = ToHashSet(resource4);
+ resource4.Multi5 = ToHashSet(resource5);
return resource1;
}
+ private static HashSet ToHashSet(T element)
+ {
+ return [element];
+ }
+
[Benchmark]
public string SerializeResourceResponse()
{
diff --git a/benchmarks/Serialization/SerializationBenchmarkBase.cs b/benchmarks/Serialization/SerializationBenchmarkBase.cs
index eba222c9d1..c8451835cc 100644
--- a/benchmarks/Serialization/SerializationBenchmarkBase.cs
+++ b/benchmarks/Serialization/SerializationBenchmarkBase.cs
@@ -14,9 +14,9 @@ namespace Benchmarks.Serialization;
public abstract class SerializationBenchmarkBase
{
- protected readonly JsonSerializerOptions SerializerWriteOptions;
- protected readonly IResponseModelAdapter ResponseModelAdapter;
- protected readonly IResourceGraph ResourceGraph;
+ protected JsonSerializerOptions SerializerWriteOptions { get; }
+ protected IResponseModelAdapter ResponseModelAdapter { get; }
+ protected IResourceGraph ResourceGraph { get; }
protected SerializationBenchmarkBase()
{
diff --git a/package-versions.props b/package-versions.props
index b5cb4ced38..a6eb42633a 100644
--- a/package-versions.props
+++ b/package-versions.props
@@ -4,19 +4,19 @@
4.1.0
0.4.1
2.14.1
- 6.6.2
+ 6.8.1
13.0.3
8.0.*
- 0.13.*
+ 0.14.*
1.0.*
- 35.5.*
- 4.10.*
+ 35.6.*
+ 4.11.*
6.0.*
2.1.*
6.12.*
- 2.3.*
+ 2.4.*
2.0.*
1.*
8.0.*
@@ -24,8 +24,9 @@
13.0.*
8.0.*
6.*-*
- 17.10.*
- 2.8.*
+ 17.11.*
+ 2.9.*
+ 2.8.*
diff --git a/src/Examples/DapperExample/Controllers/OperationsController.cs b/src/Examples/DapperExample/Controllers/OperationsController.cs
index 2b9daf492f..ed15c6e9a2 100644
--- a/src/Examples/DapperExample/Controllers/OperationsController.cs
+++ b/src/Examples/DapperExample/Controllers/OperationsController.cs
@@ -8,5 +8,5 @@ namespace DapperExample.Controllers;
public sealed class OperationsController(
IJsonApiOptions options, IResourceGraph resourceGraph, ILoggerFactory loggerFactory, IOperationsProcessor processor, IJsonApiRequest request,
- ITargetedFields targetedFields, IAtomicOperationFilter operationFilter) : JsonApiOperationsController(options, resourceGraph, loggerFactory, processor,
- request, targetedFields, operationFilter);
+ ITargetedFields targetedFields, IAtomicOperationFilter operationFilter)
+ : JsonApiOperationsController(options, resourceGraph, loggerFactory, processor, request, targetedFields, operationFilter);
diff --git a/src/Examples/DapperExample/Program.cs b/src/Examples/DapperExample/Program.cs
index 00ab54ca97..f7bf198af9 100644
--- a/src/Examples/DapperExample/Program.cs
+++ b/src/Examples/DapperExample/Program.cs
@@ -86,7 +86,7 @@
await CreateDatabaseAsync(app.Services);
-app.Run();
+await app.RunAsync();
static DatabaseProvider GetDatabaseProvider(IConfiguration configuration)
{
diff --git a/src/Examples/DapperExample/Repositories/DapperFacade.cs b/src/Examples/DapperExample/Repositories/DapperFacade.cs
index 4d30e430c7..feb0a88e06 100644
--- a/src/Examples/DapperExample/Repositories/DapperFacade.cs
+++ b/src/Examples/DapperExample/Repositories/DapperFacade.cs
@@ -73,7 +73,7 @@ public IReadOnlyCollection BuildSqlCommandsForOneToOneRelatio
}
}
- return sqlCommands;
+ return sqlCommands.AsReadOnly();
}
public IReadOnlyCollection BuildSqlCommandsForChangedRelationshipsHavingForeignKeyAtRightSide(ResourceChangeDetector changeDetector,
@@ -107,20 +107,20 @@ public IReadOnlyCollection BuildSqlCommandsForChangedRelation
object[] rightIdsToRemove = currentRightIds.Except(newRightIds).ToArray();
object[] rightIdsToAdd = newRightIds.Except(currentRightIds).ToArray();
- if (rightIdsToRemove.Any())
+ if (rightIdsToRemove.Length > 0)
{
CommandDefinition sqlCommand = BuildSqlCommandForRemoveFromToMany(foreignKey, rightIdsToRemove, cancellationToken);
sqlCommands.Add(sqlCommand);
}
- if (rightIdsToAdd.Any())
+ if (rightIdsToAdd.Length > 0)
{
CommandDefinition sqlCommand = BuildSqlCommandForAddToToMany(foreignKey, leftId!, rightIdsToAdd, cancellationToken);
sqlCommands.Add(sqlCommand);
}
}
- return sqlCommands;
+ return sqlCommands.AsReadOnly();
}
public CommandDefinition BuildSqlCommandForRemoveFromToMany(RelationshipForeignKey foreignKey, object[] rightResourceIdValues,
@@ -180,7 +180,7 @@ public CommandDefinition BuildSqlCommandForCreate(ResourceChangeDetector changeD
IReadOnlyDictionary columnsToUpdate = changeDetector.GetChangedColumnValues();
- if (columnsToUpdate.Any())
+ if (columnsToUpdate.Count > 0)
{
var updateBuilder = new UpdateResourceStatementBuilder(_dataModelService);
UpdateNode updateNode = updateBuilder.Build(changeDetector.ResourceType, columnsToUpdate, leftId!);
diff --git a/src/Examples/DapperExample/Repositories/DapperRepository.cs b/src/Examples/DapperExample/Repositories/DapperRepository.cs
index 0c54b34353..23e9806139 100644
--- a/src/Examples/DapperExample/Repositories/DapperRepository.cs
+++ b/src/Examples/DapperExample/Repositories/DapperRepository.cs
@@ -1,3 +1,4 @@
+using System.Data;
using System.Data.Common;
using System.Diagnostics.CodeAnalysis;
using Dapper;
@@ -90,7 +91,7 @@ namespace DapperExample.Repositories;
///
///
///
-public sealed class DapperRepository : IResourceRepository, IRepositorySupportsTransaction
+public sealed partial class DapperRepository : IResourceRepository, IRepositorySupportsTransaction
where TResource : class, IIdentifiable
{
private readonly ITargetedFields _targetedFields;
@@ -216,7 +217,7 @@ await ExecuteInTransactionAsync(async transaction =>
if (rowsAffected > 1)
{
- throw new DataStoreUpdateException(new Exception("Multiple rows found."));
+ throw new DataStoreUpdateException(new DataException("Multiple rows found."));
}
}
@@ -233,7 +234,7 @@ await ExecuteInTransactionAsync(async transaction =>
if (rowsAffected == 0)
{
- throw new DataStoreUpdateException(new Exception("Row does not exist."));
+ throw new DataStoreUpdateException(new DataException("Row does not exist."));
}
}
}, cancellationToken);
@@ -313,7 +314,7 @@ public async Task UpdateAsync(TResource resourceFromRequest, TResource resourceF
IReadOnlyCollection postSqlCommands =
_dapperFacade.BuildSqlCommandsForChangedRelationshipsHavingForeignKeyAtRightSide(changeDetector, resourceFromDatabase.Id, cancellationToken);
- if (preSqlCommands.Any() || updateCommand != null || postSqlCommands.Any())
+ if (preSqlCommands.Count > 0 || updateCommand != null || postSqlCommands.Count > 0)
{
await ExecuteInTransactionAsync(async transaction =>
{
@@ -324,7 +325,7 @@ await ExecuteInTransactionAsync(async transaction =>
if (rowsAffected > 1)
{
- throw new DataStoreUpdateException(new Exception("Multiple rows found."));
+ throw new DataStoreUpdateException(new DataException("Multiple rows found."));
}
}
@@ -335,7 +336,7 @@ await ExecuteInTransactionAsync(async transaction =>
if (rowsAffected != 1)
{
- throw new DataStoreUpdateException(new Exception("Row does not exist or multiple rows found."));
+ throw new DataStoreUpdateException(new DataException("Row does not exist or multiple rows found."));
}
}
@@ -346,7 +347,7 @@ await ExecuteInTransactionAsync(async transaction =>
if (rowsAffected == 0)
{
- throw new DataStoreUpdateException(new Exception("Row does not exist."));
+ throw new DataStoreUpdateException(new DataException("Row does not exist."));
}
}
}, cancellationToken);
@@ -374,7 +375,7 @@ await ExecuteInTransactionAsync(async transaction =>
if (rowsAffected != 1)
{
- throw new DataStoreUpdateException(new Exception("Row does not exist or multiple rows found."));
+ throw new DataStoreUpdateException(new DataException("Row does not exist or multiple rows found."));
}
}, cancellationToken);
@@ -409,7 +410,7 @@ public async Task SetRelationshipAsync(TResource leftResource, object? rightValu
IReadOnlyCollection postSqlCommands =
_dapperFacade.BuildSqlCommandsForChangedRelationshipsHavingForeignKeyAtRightSide(changeDetector, leftResource.Id, cancellationToken);
- if (preSqlCommands.Any() || updateCommand != null || postSqlCommands.Any())
+ if (preSqlCommands.Count > 0 || updateCommand != null || postSqlCommands.Count > 0)
{
await ExecuteInTransactionAsync(async transaction =>
{
@@ -420,7 +421,7 @@ await ExecuteInTransactionAsync(async transaction =>
if (rowsAffected > 1)
{
- throw new DataStoreUpdateException(new Exception("Multiple rows found."));
+ throw new DataStoreUpdateException(new DataException("Multiple rows found."));
}
}
@@ -431,7 +432,7 @@ await ExecuteInTransactionAsync(async transaction =>
if (rowsAffected != 1)
{
- throw new DataStoreUpdateException(new Exception("Row does not exist or multiple rows found."));
+ throw new DataStoreUpdateException(new DataException("Row does not exist or multiple rows found."));
}
}
@@ -442,7 +443,7 @@ await ExecuteInTransactionAsync(async transaction =>
if (rowsAffected == 0)
{
- throw new DataStoreUpdateException(new Exception("Row does not exist."));
+ throw new DataStoreUpdateException(new DataException("Row does not exist."));
}
}
}, cancellationToken);
@@ -467,7 +468,7 @@ public async Task AddToToManyRelationshipAsync(TResource? leftResource, [Disallo
await _resourceDefinitionAccessor.OnWritingAsync(leftPlaceholderResource, WriteOperationKind.AddToRelationship, cancellationToken);
- if (rightResourceIds.Any())
+ if (rightResourceIds.Count > 0)
{
RelationshipForeignKey foreignKey = _dataModelService.GetForeignKey(relationship);
object[] rightResourceIdValues = rightResourceIds.Select(resource => resource.GetTypedId()).ToArray();
@@ -482,7 +483,7 @@ await ExecuteInTransactionAsync(async transaction =>
if (rowsAffected != rightResourceIdValues.Length)
{
- throw new DataStoreUpdateException(new Exception("Row does not exist or multiple rows found."));
+ throw new DataStoreUpdateException(new DataException("Row does not exist or multiple rows found."));
}
}, cancellationToken);
@@ -503,7 +504,7 @@ public async Task RemoveFromToManyRelationshipAsync(TResource leftResource, ISet
await _resourceDefinitionAccessor.OnWritingAsync(leftResource, WriteOperationKind.RemoveFromRelationship, cancellationToken);
- if (rightResourceIds.Any())
+ if (rightResourceIds.Count > 0)
{
RelationshipForeignKey foreignKey = _dataModelService.GetForeignKey(relationship);
object[] rightResourceIdValues = rightResourceIds.Select(resource => resource.GetTypedId()).ToArray();
@@ -516,7 +517,7 @@ await ExecuteInTransactionAsync(async transaction =>
if (rowsAffected != rightResourceIdValues.Length)
{
- throw new DataStoreUpdateException(new Exception("Row does not exist or multiple rows found."));
+ throw new DataStoreUpdateException(new DataException("Row does not exist or multiple rows found."));
}
}, cancellationToken);
@@ -530,19 +531,18 @@ private void LogSqlCommand(CommandDefinition command)
_captureStore.Add(command.CommandText, parameters);
- string message = GetLogText(command.CommandText, parameters);
- _logger.LogInformation(message);
- }
-
- private string GetLogText(string statement, IDictionary? parameters)
- {
- if (parameters?.Any() == true)
+ if (_logger.IsEnabled(LogLevel.Information))
{
- string parametersText = string.Join(", ", parameters.Select(parameter => _parameterFormatter.Format(parameter.Key, parameter.Value)));
- return $"Executing SQL with parameters: {parametersText}{Environment.NewLine}{statement}";
+ if (parameters?.Count > 0)
+ {
+ string parametersText = string.Join(", ", parameters.Select(parameter => _parameterFormatter.Format(parameter.Key, parameter.Value)));
+ LogExecuteWithParameters(Environment.NewLine, command.CommandText, parametersText);
+ }
+ else
+ {
+ LogExecute(Environment.NewLine, command.CommandText);
+ }
}
-
- return $"Executing SQL: {Environment.NewLine}{statement}";
}
private async Task ExecuteQueryAsync(Func> asyncAction, CancellationToken cancellationToken)
@@ -580,4 +580,10 @@ private async Task ExecuteInTransactionAsync(Func asyncActi
throw new DataStoreUpdateException(exception);
}
}
+
+ [LoggerMessage(Level = LogLevel.Information, SkipEnabledCheck = true, Message = "Executing SQL: {LineBreak}{Query}")]
+ private partial void LogExecute(string lineBreak, string query);
+
+ [LoggerMessage(Level = LogLevel.Information, SkipEnabledCheck = true, Message = "Executing SQL with parameters: {Parameters}{LineBreak}{Query}")]
+ private partial void LogExecuteWithParameters(string lineBreak, string query, string parameters);
}
diff --git a/src/Examples/DapperExample/Repositories/ResourceChangeDetector.cs b/src/Examples/DapperExample/Repositories/ResourceChangeDetector.cs
index 1d9b998340..6b075d6cae 100644
--- a/src/Examples/DapperExample/Repositories/ResourceChangeDetector.cs
+++ b/src/Examples/DapperExample/Repositories/ResourceChangeDetector.cs
@@ -18,8 +18,8 @@ internal sealed class ResourceChangeDetector
private Dictionary _currentColumnValues = [];
private Dictionary _newColumnValues = [];
- private Dictionary> _currentRightResourcesByRelationship = [];
- private Dictionary> _newRightResourcesByRelationship = [];
+ private Dictionary> _currentRightResourcesByRelationship = [];
+ private Dictionary> _newRightResourcesByRelationship = [];
public ResourceType ResourceType { get; }
@@ -62,9 +62,9 @@ public void CaptureNewValues(IIdentifiable resource)
return columnValues;
}
- private Dictionary> CaptureRightResourcesByRelationship(IIdentifiable resource)
+ private Dictionary> CaptureRightResourcesByRelationship(IIdentifiable resource)
{
- Dictionary> relationshipValues = [];
+ Dictionary> relationshipValues = [];
foreach (RelationshipAttribute relationship in ResourceType.Relationships)
{
@@ -88,7 +88,7 @@ public void AssertIsNotClearingAnyRequiredToOneRelationships(string resourceName
if (!foreignKey.IsNullable)
{
object? currentRightId =
- _currentRightResourcesByRelationship.TryGetValue(hasOneRelationship, out ISet? currentRightResources)
+ _currentRightResourcesByRelationship.TryGetValue(hasOneRelationship, out HashSet? currentRightResources)
? currentRightResources.FirstOrDefault()?.GetTypedId()
: null;
@@ -118,7 +118,7 @@ public void AssertIsNotClearingAnyRequiredToOneRelationships(string resourceName
if (newRightId != null)
{
object? currentRightId =
- _currentRightResourcesByRelationship.TryGetValue(hasOneRelationship, out ISet? currentRightResources)
+ _currentRightResourcesByRelationship.TryGetValue(hasOneRelationship, out HashSet? currentRightResources)
? currentRightResources.FirstOrDefault()?.GetTypedId()
: null;
@@ -130,7 +130,7 @@ public void AssertIsNotClearingAnyRequiredToOneRelationships(string resourceName
}
}
- return changes;
+ return changes.AsReadOnly();
}
public IReadOnlyDictionary GetChangedColumnValues()
@@ -147,7 +147,7 @@ public void AssertIsNotClearingAnyRequiredToOneRelationships(string resourceName
}
}
- return changes;
+ return changes.AsReadOnly();
}
public IReadOnlyDictionary GetChangedToOneRelationshipsWithForeignKeyAtRightSide()
@@ -165,7 +165,7 @@ public void AssertIsNotClearingAnyRequiredToOneRelationships(string resourceName
continue;
}
- object? currentRightId = _currentRightResourcesByRelationship.TryGetValue(hasOneRelationship, out ISet? currentRightResources)
+ object? currentRightId = _currentRightResourcesByRelationship.TryGetValue(hasOneRelationship, out HashSet? currentRightResources)
? currentRightResources.FirstOrDefault()?.GetTypedId()
: null;
@@ -178,7 +178,7 @@ public void AssertIsNotClearingAnyRequiredToOneRelationships(string resourceName
}
}
- return changes;
+ return changes.AsReadOnly();
}
public IReadOnlyDictionary currentRightIds, ISet
/// The reference to t1 in the WHERE clause has become stale and needs to be pulled out into scope, which is t2.
///
-internal sealed class StaleColumnReferenceRewriter : SqlTreeNodeVisitor
+internal sealed partial class StaleColumnReferenceRewriter : SqlTreeNodeVisitor
{
private readonly IReadOnlyDictionary _oldToNewTableAliasMap;
private readonly ILogger _logger;
@@ -59,12 +60,13 @@ public override SqlTreeNode VisitSelect(SelectNode node, ColumnVisitMode mode)
{
IncludeTableAliasInCurrentScope(node);
- using IDisposable scope = EnterSelectScope();
-
- IReadOnlyDictionary> selectors = VisitSelectors(node.Selectors, mode);
- WhereNode? where = TypedVisit(node.Where, mode);
- OrderByNode? orderBy = TypedVisit(node.OrderBy, mode);
- return new SelectNode(selectors, where, orderBy, node.Alias);
+ using (EnterSelectScope())
+ {
+ ReadOnlyDictionary> selectors = VisitSelectors(node.Selectors, mode);
+ WhereNode? where = TypedVisit(node.Where, mode);
+ OrderByNode? orderBy = TypedVisit(node.OrderBy, mode);
+ return new SelectNode(selectors, where, orderBy, node.Alias);
+ }
}
private void IncludeTableAliasInCurrentScope(TableSourceNode tableSource)
@@ -76,7 +78,7 @@ private void IncludeTableAliasInCurrentScope(TableSourceNode tableSource)
}
}
- private IDisposable EnterSelectScope()
+ private PopStackOnDispose> EnterSelectScope()
{
Dictionary newScope = CopyTopStackElement();
_tablesInScopeStack.Push(newScope);
@@ -95,7 +97,7 @@ private Dictionary CopyTopStackElement()
return new Dictionary(topElement);
}
- private IReadOnlyDictionary> VisitSelectors(
+ private ReadOnlyDictionary> VisitSelectors(
IReadOnlyDictionary> selectors, ColumnVisitMode mode)
{
Dictionary> newSelectors = [];
@@ -103,12 +105,12 @@ private IReadOnlyDictionary> Visi
foreach ((TableAccessorNode tableAccessor, IReadOnlyList tableSelectors) in selectors)
{
TableAccessorNode newTableAccessor = TypedVisit(tableAccessor, mode);
- IReadOnlyList newTableSelectors = VisitList(tableSelectors, ColumnVisitMode.Declaration);
+ ReadOnlyCollection newTableSelectors = VisitSequence(tableSelectors, ColumnVisitMode.Declaration);
newSelectors.Add(newTableAccessor, newTableSelectors);
}
- return newSelectors;
+ return newSelectors.AsReadOnly();
}
public override SqlTreeNode VisitTable(TableNode node, ColumnVisitMode mode)
@@ -142,7 +144,7 @@ public override SqlTreeNode VisitColumnInTable(ColumnInTableNode node, ColumnVis
return MapColumnInTable(node, tablesInScope);
}
- private ColumnNode MapColumnInTable(ColumnInTableNode column, IDictionary tablesInScope)
+ private ColumnNode MapColumnInTable(ColumnInTableNode column, Dictionary tablesInScope)
{
if (column.TableAlias != null && !tablesInScope.ContainsKey(column.TableAlias))
{
@@ -159,7 +161,7 @@ private ColumnNode MapColumnInTable(ColumnInTableNode column, IDictionary terms = VisitList(node.Terms, mode);
+ ReadOnlyCollection terms = VisitSequence(node.Terms, mode);
return new LogicalNode(node.Operator, terms);
}
@@ -233,7 +235,7 @@ public override SqlTreeNode VisitLike(LikeNode node, ColumnVisitMode mode)
public override SqlTreeNode VisitIn(InNode node, ColumnVisitMode mode)
{
ColumnNode column = TypedVisit(node.Column, mode);
- IReadOnlyList values = VisitList(node.Values, mode);
+ ReadOnlyCollection values = VisitSequence(node.Values, mode);
return new InNode(column, values);
}
@@ -251,7 +253,7 @@ public override SqlTreeNode VisitCount(CountNode node, ColumnVisitMode mode)
public override SqlTreeNode VisitOrderBy(OrderByNode node, ColumnVisitMode mode)
{
- IReadOnlyList terms = VisitList(node.Terms, mode);
+ ReadOnlyCollection terms = VisitSequence(node.Terms, mode);
return new OrderByNode(terms);
}
@@ -277,19 +279,22 @@ public override SqlTreeNode VisitNullConstant(NullConstantNode node, ColumnVisit
return node;
}
- [return: NotNullIfNotNull("node")]
+ [return: NotNullIfNotNull(nameof(node))]
private T? TypedVisit(T? node, ColumnVisitMode mode)
where T : SqlTreeNode
{
return node != null ? (T)Visit(node, mode) : null;
}
- private IReadOnlyList VisitList(IEnumerable nodes, ColumnVisitMode mode)
+ private ReadOnlyCollection VisitSequence(IEnumerable nodes, ColumnVisitMode mode)
where T : SqlTreeNode
{
- return nodes.Select(element => TypedVisit(element, mode)).ToList();
+ return nodes.Select(element => TypedVisit(element, mode)).ToArray().AsReadOnly();
}
+ [LoggerMessage(Level = LogLevel.Debug, Message = "Mapped inaccessible column {FromColumn} to {ToColumn}.")]
+ private partial void LogColumnMapped(ColumnNode fromColumn, ColumnNode toColumn);
+
private sealed class PopStackOnDispose(Stack stack) : IDisposable
{
private readonly Stack _stack = stack;
diff --git a/src/Examples/DapperExample/TranslationToSql/Transformations/UnusedSelectorsRewriter.cs b/src/Examples/DapperExample/TranslationToSql/Transformations/UnusedSelectorsRewriter.cs
index 7cffc8e29a..08f09da99a 100644
--- a/src/Examples/DapperExample/TranslationToSql/Transformations/UnusedSelectorsRewriter.cs
+++ b/src/Examples/DapperExample/TranslationToSql/Transformations/UnusedSelectorsRewriter.cs
@@ -1,3 +1,4 @@
+using System.Collections.ObjectModel;
using System.Diagnostics.CodeAnalysis;
using DapperExample.TranslationToSql.TreeNodes;
using JsonApiDotNetCore;
@@ -26,7 +27,7 @@ namespace DapperExample.TranslationToSql.Transformations;
///
/// The selectors t1."AccountId" and t1."FirstName" have no references and can be removed.
///
-internal sealed class UnusedSelectorsRewriter : SqlTreeNodeVisitor, SqlTreeNode>
+internal sealed partial class UnusedSelectorsRewriter : SqlTreeNodeVisitor, SqlTreeNode>
{
private readonly ColumnSelectorUsageCollector _usageCollector;
private readonly ILogger _logger;
@@ -52,9 +53,9 @@ public SelectNode RemoveUnusedSelectorsInSubQueries(SelectNode select)
_hasChanged = false;
_usageCollector.Collect(_rootSelect);
- _logger.LogDebug("Started removal of unused selectors.");
+ LogStarted();
_rootSelect = TypedVisit(_rootSelect, _usageCollector.UsedColumns);
- _logger.LogDebug("Finished removal of unused selectors.");
+ LogFinished();
}
while (_hasChanged);
@@ -68,13 +69,13 @@ public override SqlTreeNode DefaultVisit(SqlTreeNode node, ISet used
public override SqlTreeNode VisitSelect(SelectNode node, ISet usedColumns)
{
- IReadOnlyDictionary> selectors = VisitSelectors(node, usedColumns);
+ ReadOnlyDictionary> selectors = VisitSelectors(node, usedColumns);
WhereNode? where = TypedVisit(node.Where, usedColumns);
OrderByNode? orderBy = TypedVisit(node.OrderBy, usedColumns);
return new SelectNode(selectors, where, orderBy, node.Alias);
}
- private IReadOnlyDictionary> VisitSelectors(SelectNode select, ISet usedColumns)
+ private ReadOnlyDictionary> VisitSelectors(SelectNode select, ISet usedColumns)
{
Dictionary> newSelectors = [];
@@ -85,10 +86,10 @@ private IReadOnlyDictionary> Visi
newSelectors.Add(newTableAccessor, newTableSelectors);
}
- return newSelectors;
+ return newSelectors.AsReadOnly();
}
- private List VisitTableSelectors(IEnumerable selectors, ISet usedColumns)
+ private ReadOnlyCollection VisitTableSelectors(IEnumerable selectors, ISet usedColumns)
{
List newTableSelectors = [];
@@ -98,7 +99,7 @@ private List VisitTableSelectors(IEnumerable selecto
{
if (!usedColumns.Contains(columnSelector.Column))
{
- _logger.LogDebug($"Removing unused selector {columnSelector}.");
+ LogSelectorRemoved(columnSelector);
_hasChanged = true;
continue;
}
@@ -107,7 +108,7 @@ private List VisitTableSelectors(IEnumerable selecto
newTableSelectors.Add(selector);
}
- return newTableSelectors;
+ return newTableSelectors.AsReadOnly();
}
public override SqlTreeNode VisitFrom(FromNode node, ISet usedColumns)
@@ -150,7 +151,7 @@ public override SqlTreeNode VisitNot(NotNode node, ISet usedColumns)
public override SqlTreeNode VisitLogical(LogicalNode node, ISet usedColumns)
{
- IReadOnlyList terms = VisitList(node.Terms, usedColumns);
+ ReadOnlyCollection terms = VisitSequence(node.Terms, usedColumns);
return new LogicalNode(node.Operator, terms);
}
@@ -170,7 +171,7 @@ public override SqlTreeNode VisitLike(LikeNode node, ISet usedColumn
public override SqlTreeNode VisitIn(InNode node, ISet usedColumns)
{
ColumnNode column = TypedVisit(node.Column, usedColumns);
- IReadOnlyList values = VisitList(node.Values, usedColumns);
+ ReadOnlyCollection values = VisitSequence(node.Values, usedColumns);
return new InNode(column, values);
}
@@ -188,7 +189,7 @@ public override SqlTreeNode VisitCount(CountNode node, ISet usedColu
public override SqlTreeNode VisitOrderBy(OrderByNode node, ISet usedColumns)
{
- IReadOnlyList terms = VisitList(node.Terms, usedColumns);
+ ReadOnlyCollection terms = VisitSequence(node.Terms, usedColumns);
return new OrderByNode(terms);
}
@@ -204,16 +205,25 @@ public override SqlTreeNode VisitOrderByCount(OrderByCountNode node, ISet(T? node, ISet usedColumns)
where T : SqlTreeNode
{
return node != null ? (T)Visit(node, usedColumns) : null;
}
- private IReadOnlyList VisitList(IEnumerable nodes, ISet usedColumns)
+ private ReadOnlyCollection VisitSequence(IEnumerable nodes, ISet usedColumns)
where T : SqlTreeNode
{
- return nodes.Select(element => TypedVisit(element, usedColumns)).ToList();
+ return nodes.Select(element => TypedVisit(element, usedColumns)).ToArray().AsReadOnly();
}
+
+ [LoggerMessage(Level = LogLevel.Debug, Message = "Started removal of unused selectors.")]
+ private partial void LogStarted();
+
+ [LoggerMessage(Level = LogLevel.Debug, Message = "Finished removal of unused selectors.")]
+ private partial void LogFinished();
+
+ [LoggerMessage(Level = LogLevel.Debug, Message = "Removing unused selector {Selector}.")]
+ private partial void LogSelectorRemoved(ColumnSelectorNode selector);
}
diff --git a/src/Examples/DapperExample/TranslationToSql/TreeNodes/ColumnInSelectNode.cs b/src/Examples/DapperExample/TranslationToSql/TreeNodes/ColumnInSelectNode.cs
index 2be0561011..88625104d2 100644
--- a/src/Examples/DapperExample/TranslationToSql/TreeNodes/ColumnInSelectNode.cs
+++ b/src/Examples/DapperExample/TranslationToSql/TreeNodes/ColumnInSelectNode.cs
@@ -10,8 +10,8 @@ namespace DapperExample.TranslationToSql.TreeNodes;
/// SELECT t2.Id AS Id0 FROM (SELECT t1.Id FROM Users AS t1) AS t2
/// ]]>.
///
-internal sealed class ColumnInSelectNode(ColumnSelectorNode selector, string? tableAlias) : ColumnNode(GetColumnName(selector), selector.Column.Type,
- tableAlias)
+internal sealed class ColumnInSelectNode(ColumnSelectorNode selector, string? tableAlias)
+ : ColumnNode(GetColumnName(selector), selector.Column.Type, tableAlias)
{
public ColumnSelectorNode Selector { get; } = selector;
diff --git a/src/Examples/DapperExample/TranslationToSql/TreeNodes/ColumnInTableNode.cs b/src/Examples/DapperExample/TranslationToSql/TreeNodes/ColumnInTableNode.cs
index cd605e72a4..da29ed97fc 100644
--- a/src/Examples/DapperExample/TranslationToSql/TreeNodes/ColumnInTableNode.cs
+++ b/src/Examples/DapperExample/TranslationToSql/TreeNodes/ColumnInTableNode.cs
@@ -8,7 +8,8 @@ namespace DapperExample.TranslationToSql.TreeNodes;
/// FROM Users AS t1
/// ]]>.
///
-internal sealed class ColumnInTableNode(string name, ColumnType type, string? tableAlias) : ColumnNode(name, type, tableAlias)
+internal sealed class ColumnInTableNode(string name, ColumnType type, string? tableAlias)
+ : ColumnNode(name, type, tableAlias)
{
public override TResult Accept(SqlTreeNodeVisitor visitor, TArgument argument)
{
diff --git a/src/Examples/DapperExample/TranslationToSql/TreeNodes/CountSelectorNode.cs b/src/Examples/DapperExample/TranslationToSql/TreeNodes/CountSelectorNode.cs
index d0b9e18ca2..d344659393 100644
--- a/src/Examples/DapperExample/TranslationToSql/TreeNodes/CountSelectorNode.cs
+++ b/src/Examples/DapperExample/TranslationToSql/TreeNodes/CountSelectorNode.cs
@@ -8,7 +8,8 @@ namespace DapperExample.TranslationToSql.TreeNodes;
/// SELECT COUNT(*) FROM Users
/// ]]>.
///
-internal sealed class CountSelectorNode(string? alias) : SelectorNode(alias)
+internal sealed class CountSelectorNode(string? alias)
+ : SelectorNode(alias)
{
public override TResult Accept(SqlTreeNodeVisitor visitor, TArgument argument)
{
diff --git a/src/Examples/DapperExample/TranslationToSql/TreeNodes/FromNode.cs b/src/Examples/DapperExample/TranslationToSql/TreeNodes/FromNode.cs
index 3d29636212..9e39a9d516 100644
--- a/src/Examples/DapperExample/TranslationToSql/TreeNodes/FromNode.cs
+++ b/src/Examples/DapperExample/TranslationToSql/TreeNodes/FromNode.cs
@@ -5,7 +5,8 @@ namespace DapperExample.TranslationToSql.TreeNodes;
/// FROM Customers AS t1
/// ]]>.
///
-internal sealed class FromNode(TableSourceNode source) : TableAccessorNode(source)
+internal sealed class FromNode(TableSourceNode source)
+ : TableAccessorNode(source)
{
public override TResult Accept(SqlTreeNodeVisitor visitor, TArgument argument)
{
diff --git a/src/Examples/DapperExample/TranslationToSql/TreeNodes/LogicalNode.cs b/src/Examples/DapperExample/TranslationToSql/TreeNodes/LogicalNode.cs
index 40fc95b88c..a01306d061 100644
--- a/src/Examples/DapperExample/TranslationToSql/TreeNodes/LogicalNode.cs
+++ b/src/Examples/DapperExample/TranslationToSql/TreeNodes/LogicalNode.cs
@@ -14,7 +14,7 @@ internal sealed class LogicalNode : FilterNode
public IReadOnlyList Terms { get; }
public LogicalNode(LogicalOperator @operator, params FilterNode[] terms)
- : this(@operator, terms.ToList())
+ : this(@operator, terms.AsReadOnly())
{
}
diff --git a/src/Examples/DapperExample/TranslationToSql/TreeNodes/OneSelectorNode.cs b/src/Examples/DapperExample/TranslationToSql/TreeNodes/OneSelectorNode.cs
index a9c05301a7..ac9e75d44d 100644
--- a/src/Examples/DapperExample/TranslationToSql/TreeNodes/OneSelectorNode.cs
+++ b/src/Examples/DapperExample/TranslationToSql/TreeNodes/OneSelectorNode.cs
@@ -8,7 +8,8 @@ namespace DapperExample.TranslationToSql.TreeNodes;
/// SELECT 1 FROM Users
/// ]]>.
///
-internal sealed class OneSelectorNode(string? alias) : SelectorNode(alias)
+internal sealed class OneSelectorNode(string? alias)
+ : SelectorNode(alias)
{
public override TResult Accept(SqlTreeNodeVisitor visitor, TArgument argument)
{
diff --git a/src/Examples/DapperExample/TranslationToSql/TreeNodes/ParameterNode.cs b/src/Examples/DapperExample/TranslationToSql/TreeNodes/ParameterNode.cs
index c2a5824f72..a9feaa7836 100644
--- a/src/Examples/DapperExample/TranslationToSql/TreeNodes/ParameterNode.cs
+++ b/src/Examples/DapperExample/TranslationToSql/TreeNodes/ParameterNode.cs
@@ -16,7 +16,7 @@ internal sealed class ParameterNode : SqlValueNode
public ParameterNode(string name, object? value)
{
- ArgumentGuard.NotNull(name);
+ ArgumentGuard.NotNullNorEmpty(name);
if (!name.StartsWith('@') || name.Length < 2)
{
diff --git a/src/Examples/DapperExample/TranslationToSql/TreeNodes/SelectNode.cs b/src/Examples/DapperExample/TranslationToSql/TreeNodes/SelectNode.cs
index 0fc42b1ba0..add1ddc433 100644
--- a/src/Examples/DapperExample/TranslationToSql/TreeNodes/SelectNode.cs
+++ b/src/Examples/DapperExample/TranslationToSql/TreeNodes/SelectNode.cs
@@ -19,7 +19,7 @@ internal sealed class SelectNode : TableSourceNode
public WhereNode? Where { get; }
public OrderByNode? OrderBy { get; }
- public override IReadOnlyList Columns => _columns;
+ public override IReadOnlyList Columns => _columns.AsReadOnly();
public SelectNode(IReadOnlyDictionary> selectors, WhereNode? where, OrderByNode? orderBy, string? alias)
: base(alias)
diff --git a/src/Examples/DapperExample/TranslationToSql/TreeNodes/TableNode.cs b/src/Examples/DapperExample/TranslationToSql/TreeNodes/TableNode.cs
index 31977f1546..6abb913418 100644
--- a/src/Examples/DapperExample/TranslationToSql/TreeNodes/TableNode.cs
+++ b/src/Examples/DapperExample/TranslationToSql/TreeNodes/TableNode.cs
@@ -21,7 +21,7 @@ internal sealed class TableNode : TableSourceNode
public string Name => _resourceType.ClrType.Name.Pluralize();
- public override IReadOnlyList Columns => _columns;
+ public override IReadOnlyList Columns => _columns.AsReadOnly();
public TableNode(ResourceType resourceType, IReadOnlyDictionary columnMappings, string? alias)
: base(alias)
diff --git a/src/Examples/DatabasePerTenantExample/Program.cs b/src/Examples/DatabasePerTenantExample/Program.cs
index 1414e28424..4b88357d78 100644
--- a/src/Examples/DatabasePerTenantExample/Program.cs
+++ b/src/Examples/DatabasePerTenantExample/Program.cs
@@ -38,7 +38,7 @@
await CreateDatabaseAsync("AdventureWorks", app.Services);
await CreateDatabaseAsync("Contoso", app.Services);
-app.Run();
+await app.RunAsync();
[Conditional("DEBUG")]
static void SetDbContextDebugOptions(DbContextOptionsBuilder options)
diff --git a/src/Examples/GettingStarted/Data/SampleDbContext.cs b/src/Examples/GettingStarted/Data/SampleDbContext.cs
index 5e65f8466e..cd8b16515d 100644
--- a/src/Examples/GettingStarted/Data/SampleDbContext.cs
+++ b/src/Examples/GettingStarted/Data/SampleDbContext.cs
@@ -5,7 +5,8 @@
namespace GettingStarted.Data;
[UsedImplicitly(ImplicitUseTargetFlags.Members)]
-public class SampleDbContext(DbContextOptions options) : DbContext(options)
+public class SampleDbContext(DbContextOptions options)
+ : DbContext(options)
{
public DbSet Books => Set();
}
diff --git a/src/Examples/GettingStarted/Program.cs b/src/Examples/GettingStarted/Program.cs
index 9ce6beda08..634e130a3f 100644
--- a/src/Examples/GettingStarted/Program.cs
+++ b/src/Examples/GettingStarted/Program.cs
@@ -38,7 +38,7 @@
await CreateDatabaseAsync(app.Services);
-app.Run();
+await app.RunAsync();
[Conditional("DEBUG")]
static void SetDbContextDebugOptions(DbContextOptionsBuilder options)
diff --git a/src/Examples/JsonApiDotNetCoreExample/AppLog.cs b/src/Examples/JsonApiDotNetCoreExample/AppLog.cs
new file mode 100644
index 0000000000..6cb4af1a55
--- /dev/null
+++ b/src/Examples/JsonApiDotNetCoreExample/AppLog.cs
@@ -0,0 +1,9 @@
+#pragma warning disable AV1008 // Class should not be static
+
+namespace JsonApiDotNetCoreExample;
+
+internal static partial class AppLog
+{
+ [LoggerMessage(Level = LogLevel.Information, SkipEnabledCheck = true, Message = "Measurement results for application startup:{LineBreak}{TimingResults}")]
+ public static partial void LogStartupTimings(ILogger logger, string lineBreak, string timingResults);
+}
diff --git a/src/Examples/JsonApiDotNetCoreExample/Controllers/NonJsonApiController.cs b/src/Examples/JsonApiDotNetCoreExample/Controllers/NonJsonApiController.cs
index 3c89ac3bcf..aa51110869 100644
--- a/src/Examples/JsonApiDotNetCoreExample/Controllers/NonJsonApiController.cs
+++ b/src/Examples/JsonApiDotNetCoreExample/Controllers/NonJsonApiController.cs
@@ -16,7 +16,8 @@ public IActionResult Get()
[HttpPost]
public async Task PostAsync()
{
- string name = await new StreamReader(Request.Body).ReadToEndAsync();
+ using var reader = new StreamReader(Request.Body, leaveOpen: true);
+ string name = await reader.ReadToEndAsync();
if (string.IsNullOrEmpty(name))
{
diff --git a/src/Examples/JsonApiDotNetCoreExample/Controllers/OperationsController.cs b/src/Examples/JsonApiDotNetCoreExample/Controllers/OperationsController.cs
index 9d8d944967..a5cb2ef2e3 100644
--- a/src/Examples/JsonApiDotNetCoreExample/Controllers/OperationsController.cs
+++ b/src/Examples/JsonApiDotNetCoreExample/Controllers/OperationsController.cs
@@ -8,5 +8,5 @@ namespace JsonApiDotNetCoreExample.Controllers;
public sealed class OperationsController(
IJsonApiOptions options, IResourceGraph resourceGraph, ILoggerFactory loggerFactory, IOperationsProcessor processor, IJsonApiRequest request,
- ITargetedFields targetedFields, IAtomicOperationFilter operationFilter) : JsonApiOperationsController(options, resourceGraph, loggerFactory, processor,
- request, targetedFields, operationFilter);
+ ITargetedFields targetedFields, IAtomicOperationFilter operationFilter)
+ : JsonApiOperationsController(options, resourceGraph, loggerFactory, processor, request, targetedFields, operationFilter);
diff --git a/src/Examples/JsonApiDotNetCoreExample/Data/AppDbContext.cs b/src/Examples/JsonApiDotNetCoreExample/Data/AppDbContext.cs
index e7864a42f6..f5c7e8e401 100644
--- a/src/Examples/JsonApiDotNetCoreExample/Data/AppDbContext.cs
+++ b/src/Examples/JsonApiDotNetCoreExample/Data/AppDbContext.cs
@@ -8,7 +8,8 @@
namespace JsonApiDotNetCoreExample.Data;
[UsedImplicitly(ImplicitUseTargetFlags.Members)]
-public sealed class AppDbContext(DbContextOptions options) : DbContext(options)
+public sealed class AppDbContext(DbContextOptions options)
+ : DbContext(options)
{
public DbSet TodoItems => Set();
diff --git a/src/Examples/JsonApiDotNetCoreExample/Definitions/TodoItemDefinition.cs b/src/Examples/JsonApiDotNetCoreExample/Definitions/TodoItemDefinition.cs
index d94fffa85b..cd85ccd696 100644
--- a/src/Examples/JsonApiDotNetCoreExample/Definitions/TodoItemDefinition.cs
+++ b/src/Examples/JsonApiDotNetCoreExample/Definitions/TodoItemDefinition.cs
@@ -19,7 +19,8 @@ ISystemClock systemClock
#else
TimeProvider timeProvider
#endif
-) : JsonApiResourceDefinition(resourceGraph)
+)
+ : JsonApiResourceDefinition(resourceGraph)
{
#if NET6_0
private readonly Func _getUtcNow = () => systemClock.UtcNow;
diff --git a/src/Examples/JsonApiDotNetCoreExample/Program.cs b/src/Examples/JsonApiDotNetCoreExample/Program.cs
index 3839fffe43..54fa5899a3 100644
--- a/src/Examples/JsonApiDotNetCoreExample/Program.cs
+++ b/src/Examples/JsonApiDotNetCoreExample/Program.cs
@@ -22,7 +22,7 @@
await CreateDatabaseAsync(app.Services);
}
-app.Run();
+await app.RunAsync();
static WebApplication CreateWebApplication(string[] args)
{
@@ -39,10 +39,10 @@ static WebApplication CreateWebApplication(string[] args)
// Configure the HTTP request pipeline.
ConfigurePipeline(app);
- if (CodeTimingSessionManager.IsEnabled)
+ if (CodeTimingSessionManager.IsEnabled && app.Logger.IsEnabled(LogLevel.Information))
{
string timingResults = CodeTimingSessionManager.Current.GetResults();
- app.Logger.LogInformation($"Measurement results for application startup:{Environment.NewLine}{timingResults}");
+ AppLog.LogStartupTimings(app.Logger, Environment.NewLine, timingResults);
}
return app;
diff --git a/src/Examples/MultiDbContextExample/Data/DbContextA.cs b/src/Examples/MultiDbContextExample/Data/DbContextA.cs
index 4efd10ea7b..32f6197600 100644
--- a/src/Examples/MultiDbContextExample/Data/DbContextA.cs
+++ b/src/Examples/MultiDbContextExample/Data/DbContextA.cs
@@ -5,7 +5,8 @@
namespace MultiDbContextExample.Data;
[UsedImplicitly(ImplicitUseTargetFlags.Members)]
-public sealed class DbContextA(DbContextOptions options) : DbContext(options)
+public sealed class DbContextA(DbContextOptions options)
+ : DbContext(options)
{
public DbSet ResourceAs => Set();
}
diff --git a/src/Examples/MultiDbContextExample/Data/DbContextB.cs b/src/Examples/MultiDbContextExample/Data/DbContextB.cs
index faf50c0902..8759e28e91 100644
--- a/src/Examples/MultiDbContextExample/Data/DbContextB.cs
+++ b/src/Examples/MultiDbContextExample/Data/DbContextB.cs
@@ -5,7 +5,8 @@
namespace MultiDbContextExample.Data;
[UsedImplicitly(ImplicitUseTargetFlags.Members)]
-public sealed class DbContextB(DbContextOptions options) : DbContext(options)
+public sealed class DbContextB(DbContextOptions options)
+ : DbContext(options)
{
public DbSet ResourceBs => Set();
}
diff --git a/src/Examples/MultiDbContextExample/Program.cs b/src/Examples/MultiDbContextExample/Program.cs
index 2cf567b9b5..481e8f7118 100644
--- a/src/Examples/MultiDbContextExample/Program.cs
+++ b/src/Examples/MultiDbContextExample/Program.cs
@@ -52,7 +52,7 @@
await CreateDatabaseAsync(app.Services);
-app.Run();
+await app.RunAsync();
[Conditional("DEBUG")]
static void SetDbContextDebugOptions(DbContextOptionsBuilder options)
diff --git a/src/Examples/NoEntityFrameworkExample/Program.cs b/src/Examples/NoEntityFrameworkExample/Program.cs
index f21d116e5f..8eff35d7a9 100755
--- a/src/Examples/NoEntityFrameworkExample/Program.cs
+++ b/src/Examples/NoEntityFrameworkExample/Program.cs
@@ -35,4 +35,4 @@
app.UseJsonApi();
app.MapControllers();
-app.Run();
+await app.RunAsync();
diff --git a/src/Examples/NoEntityFrameworkExample/Repositories/InMemoryResourceRepository.cs b/src/Examples/NoEntityFrameworkExample/Repositories/InMemoryResourceRepository.cs
index 9d0852ad7f..9eba0b8326 100644
--- a/src/Examples/NoEntityFrameworkExample/Repositories/InMemoryResourceRepository.cs
+++ b/src/Examples/NoEntityFrameworkExample/Repositories/InMemoryResourceRepository.cs
@@ -32,7 +32,11 @@ public Task> GetAsync(QueryLayer queryLayer, Canc
IEnumerable dataSource = GetDataSource();
IEnumerable resources = _queryLayerToLinqConverter.ApplyQueryLayer(queryLayer, dataSource);
- return Task.FromResult>(resources.ToList());
+#if NET6_0
+ return Task.FromResult>(Array.AsReadOnly(resources.ToArray()));
+#else
+ return Task.FromResult>(resources.ToArray().AsReadOnly());
+#endif
}
///
diff --git a/src/Examples/NoEntityFrameworkExample/Services/InMemoryResourceService.cs b/src/Examples/NoEntityFrameworkExample/Services/InMemoryResourceService.cs
index ee9d2196e9..e55b9340b6 100644
--- a/src/Examples/NoEntityFrameworkExample/Services/InMemoryResourceService.cs
+++ b/src/Examples/NoEntityFrameworkExample/Services/InMemoryResourceService.cs
@@ -31,7 +31,7 @@ namespace NoEntityFrameworkExample.Services;
///
/// The resource identifier type.
///
-public abstract class InMemoryResourceService(
+public abstract partial class InMemoryResourceService(
IJsonApiOptions options, IResourceGraph resourceGraph, IQueryLayerComposer queryLayerComposer, IPaginationContext paginationContext,
IEnumerable constraintProviders, IQueryableBuilder queryableBuilder, IReadOnlyModel entityModel,
ILoggerFactory loggerFactory) : IResourceQueryService
@@ -40,7 +40,7 @@ public abstract class InMemoryResourceService(
private readonly IJsonApiOptions _options = options;
private readonly IQueryLayerComposer _queryLayerComposer = queryLayerComposer;
private readonly IPaginationContext _paginationContext = paginationContext;
- private readonly IEnumerable _constraintProviders = constraintProviders;
+ private readonly IQueryConstraintProvider[] _constraintProviders = constraintProviders as IQueryConstraintProvider[] ?? constraintProviders.ToArray();
private readonly ILogger> _logger = loggerFactory.CreateLogger>();
private readonly ResourceType _resourceType = resourceGraph.GetResourceType();
private readonly QueryLayerToLinqConverter _queryLayerToLinqConverter = new(entityModel, queryableBuilder);
@@ -58,14 +58,18 @@ public Task> GetAsync(CancellationToken cancellat
QueryLayer queryLayer = _queryLayerComposer.ComposeFromConstraints(_resourceType);
IEnumerable dataSource = GetDataSource(_resourceType).Cast();
- List resources = _queryLayerToLinqConverter.ApplyQueryLayer(queryLayer, dataSource).ToList();
+ TResource[] resources = _queryLayerToLinqConverter.ApplyQueryLayer(queryLayer, dataSource).ToArray();
- if (queryLayer.Pagination?.PageSize?.Value == resources.Count)
+ if (queryLayer.Pagination?.PageSize?.Value == resources.Length)
{
_paginationContext.IsPageFull = true;
}
- return Task.FromResult>(resources);
+#if NET6_0
+ return Task.FromResult>(Array.AsReadOnly(resources));
+#else
+ return Task.FromResult>(resources.AsReadOnly());
+#endif
}
private void LogFiltersInTopScope()
@@ -87,7 +91,7 @@ private void LogFiltersInTopScope()
if (filter != null)
{
- _logger.LogInformation($"Incoming top-level filter from query string: {filter}");
+ LogIncomingFilter(filter);
}
}
@@ -195,4 +199,7 @@ private void SetNonPrimaryTotalCount([DisallowNull] TId id, RelationshipAttribut
}
protected abstract IEnumerable GetDataSource(ResourceType resourceType);
+
+ [LoggerMessage(Level = LogLevel.Information, Message = "Incoming top-level filter from query string: {Filter}")]
+ private partial void LogIncomingFilter(FilterExpression filter);
}
diff --git a/src/Examples/OpenApiKiotaClientExample/GeneratedCode/Api/ApiRequestBuilder.cs b/src/Examples/OpenApiKiotaClientExample/GeneratedCode/Api/ApiRequestBuilder.cs
index 63370b8caa..c42cbcd222 100644
--- a/src/Examples/OpenApiKiotaClientExample/GeneratedCode/Api/ApiRequestBuilder.cs
+++ b/src/Examples/OpenApiKiotaClientExample/GeneratedCode/Api/ApiRequestBuilder.cs
@@ -1,4 +1,6 @@
//
+#pragma warning disable CS0618
+using Microsoft.Kiota.Abstractions.Extensions;
using Microsoft.Kiota.Abstractions;
using OpenApiKiotaClientExample.GeneratedCode.Api.Operations;
using OpenApiKiotaClientExample.GeneratedCode.Api.People;
@@ -6,7 +8,6 @@
using OpenApiKiotaClientExample.GeneratedCode.Api.TodoItems;
using System.Collections.Generic;
using System.IO;
-using System.Linq;
using System.Threading.Tasks;
using System;
namespace OpenApiKiotaClientExample.GeneratedCode.Api
@@ -14,30 +15,31 @@ namespace OpenApiKiotaClientExample.GeneratedCode.Api
///
/// Builds and executes requests for operations under \api
///
- public class ApiRequestBuilder : BaseRequestBuilder
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.18.0")]
+ public partial class ApiRequestBuilder : BaseRequestBuilder
{
/// The operations property
- public OpenApiKiotaClientExample.GeneratedCode.Api.Operations.OperationsRequestBuilder Operations
+ public global::OpenApiKiotaClientExample.GeneratedCode.Api.Operations.OperationsRequestBuilder Operations
{
- get => new OpenApiKiotaClientExample.GeneratedCode.Api.Operations.OperationsRequestBuilder(PathParameters, RequestAdapter);
+ get => new global::OpenApiKiotaClientExample.GeneratedCode.Api.Operations.OperationsRequestBuilder(PathParameters, RequestAdapter);
}
/// The people property
- public OpenApiKiotaClientExample.GeneratedCode.Api.People.PeopleRequestBuilder People
+ public global::OpenApiKiotaClientExample.GeneratedCode.Api.People.PeopleRequestBuilder People
{
- get => new OpenApiKiotaClientExample.GeneratedCode.Api.People.PeopleRequestBuilder(PathParameters, RequestAdapter);
+ get => new global::OpenApiKiotaClientExample.GeneratedCode.Api.People.PeopleRequestBuilder(PathParameters, RequestAdapter);
}
/// The tags property
- public OpenApiKiotaClientExample.GeneratedCode.Api.Tags.TagsRequestBuilder Tags
+ public global::OpenApiKiotaClientExample.GeneratedCode.Api.Tags.TagsRequestBuilder Tags
{
- get => new OpenApiKiotaClientExample.GeneratedCode.Api.Tags.TagsRequestBuilder(PathParameters, RequestAdapter);
+ get => new global::OpenApiKiotaClientExample.GeneratedCode.Api.Tags.TagsRequestBuilder(PathParameters, RequestAdapter);
}
/// The todoItems property
- public OpenApiKiotaClientExample.GeneratedCode.Api.TodoItems.TodoItemsRequestBuilder TodoItems
+ public global::OpenApiKiotaClientExample.GeneratedCode.Api.TodoItems.TodoItemsRequestBuilder TodoItems
{
- get => new OpenApiKiotaClientExample.GeneratedCode.Api.TodoItems.TodoItemsRequestBuilder(PathParameters, RequestAdapter);
+ get => new global::OpenApiKiotaClientExample.GeneratedCode.Api.TodoItems.TodoItemsRequestBuilder(PathParameters, RequestAdapter);
}
///
- /// Instantiates a new and sets the default values.
+ /// Instantiates a new and sets the default values.
///
/// Path parameters for the request
/// The request adapter to use to execute the requests.
@@ -45,7 +47,7 @@ public ApiRequestBuilder(Dictionary pathParameters, IRequestAdap
{
}
///
- /// Instantiates a new and sets the default values.
+ /// Instantiates a new and sets the default values.
///
/// The raw URL to use for the request builder.
/// The request adapter to use to execute the requests.
@@ -54,3 +56,4 @@ public ApiRequestBuilder(string rawUrl, IRequestAdapter requestAdapter) : base(r
}
}
}
+#pragma warning restore CS0618
diff --git a/src/Examples/OpenApiKiotaClientExample/GeneratedCode/Api/Operations/OperationsRequestBuilder.cs b/src/Examples/OpenApiKiotaClientExample/GeneratedCode/Api/Operations/OperationsRequestBuilder.cs
index 5f5e4d43cb..1d404cf0e0 100644
--- a/src/Examples/OpenApiKiotaClientExample/GeneratedCode/Api/Operations/OperationsRequestBuilder.cs
+++ b/src/Examples/OpenApiKiotaClientExample/GeneratedCode/Api/Operations/OperationsRequestBuilder.cs
@@ -1,10 +1,11 @@
//
+#pragma warning disable CS0618
+using Microsoft.Kiota.Abstractions.Extensions;
using Microsoft.Kiota.Abstractions.Serialization;
using Microsoft.Kiota.Abstractions;
using OpenApiKiotaClientExample.GeneratedCode.Models;
using System.Collections.Generic;
using System.IO;
-using System.Linq;
using System.Threading.Tasks;
using System.Threading;
using System;
@@ -13,10 +14,11 @@ namespace OpenApiKiotaClientExample.GeneratedCode.Api.Operations
///
/// Builds and executes requests for operations under \api\operations
///
- public class OperationsRequestBuilder : BaseRequestBuilder
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.18.0")]
+ public partial class OperationsRequestBuilder : BaseRequestBuilder
{
///
- /// Instantiates a new and sets the default values.
+ /// Instantiates a new and sets the default values.
///
/// Path parameters for the request
/// The request adapter to use to execute the requests.
@@ -24,7 +26,7 @@ public OperationsRequestBuilder(Dictionary pathParameters, IRequ
{
}
///
- /// Instantiates a new and sets the default values.
+ /// Instantiates a new and sets the default values.
///
/// The raw URL to use for the request builder.
/// The request adapter to use to execute the requests.
@@ -34,35 +36,35 @@ public OperationsRequestBuilder(string rawUrl, IRequestAdapter requestAdapter) :
///
/// Performs multiple mutations in a linear and atomic manner.
///
- /// A
+ /// A
/// The request body
/// Cancellation token to use when cancelling requests
/// Configuration for the request such as headers, query parameters, and middleware options.
- /// When receiving a 400 status code
- /// When receiving a 403 status code
- /// When receiving a 404 status code
- /// When receiving a 409 status code
- /// When receiving a 422 status code
+ /// When receiving a 400 status code
+ /// When receiving a 403 status code
+ /// When receiving a 404 status code
+ /// When receiving a 409 status code
+ /// When receiving a 422 status code
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
#nullable enable
- public async Task PostAsync(OpenApiKiotaClientExample.GeneratedCode.Models.OperationsRequestDocument body, Action>? requestConfiguration = default, CancellationToken cancellationToken = default)
+ public async Task PostAsync(global::OpenApiKiotaClientExample.GeneratedCode.Models.OperationsRequestDocument body, Action>? requestConfiguration = default, CancellationToken cancellationToken = default)
{
#nullable restore
#else
- public async Task PostAsync(OpenApiKiotaClientExample.GeneratedCode.Models.OperationsRequestDocument body, Action> requestConfiguration = default, CancellationToken cancellationToken = default)
+ public async Task PostAsync(global::OpenApiKiotaClientExample.GeneratedCode.Models.OperationsRequestDocument body, Action> requestConfiguration = default, CancellationToken cancellationToken = default)
{
#endif
_ = body ?? throw new ArgumentNullException(nameof(body));
var requestInfo = ToPostRequestInformation(body, requestConfiguration);
var errorMapping = new Dictionary>
{
- { "400", OpenApiKiotaClientExample.GeneratedCode.Models.ErrorResponseDocument.CreateFromDiscriminatorValue },
- { "403", OpenApiKiotaClientExample.GeneratedCode.Models.ErrorResponseDocument.CreateFromDiscriminatorValue },
- { "404", OpenApiKiotaClientExample.GeneratedCode.Models.ErrorResponseDocument.CreateFromDiscriminatorValue },
- { "409", OpenApiKiotaClientExample.GeneratedCode.Models.ErrorResponseDocument.CreateFromDiscriminatorValue },
- { "422", OpenApiKiotaClientExample.GeneratedCode.Models.ErrorResponseDocument.CreateFromDiscriminatorValue },
+ { "400", global::OpenApiKiotaClientExample.GeneratedCode.Models.ErrorResponseDocument.CreateFromDiscriminatorValue },
+ { "403", global::OpenApiKiotaClientExample.GeneratedCode.Models.ErrorResponseDocument.CreateFromDiscriminatorValue },
+ { "404", global::OpenApiKiotaClientExample.GeneratedCode.Models.ErrorResponseDocument.CreateFromDiscriminatorValue },
+ { "409", global::OpenApiKiotaClientExample.GeneratedCode.Models.ErrorResponseDocument.CreateFromDiscriminatorValue },
+ { "422", global::OpenApiKiotaClientExample.GeneratedCode.Models.ErrorResponseDocument.CreateFromDiscriminatorValue },
};
- return await RequestAdapter.SendAsync(requestInfo, OpenApiKiotaClientExample.GeneratedCode.Models.OperationsResponseDocument.CreateFromDiscriminatorValue, errorMapping, cancellationToken).ConfigureAwait(false);
+ return await RequestAdapter.SendAsync(requestInfo, global::OpenApiKiotaClientExample.GeneratedCode.Models.OperationsResponseDocument.CreateFromDiscriminatorValue, errorMapping, cancellationToken).ConfigureAwait(false);
}
///
/// Performs multiple mutations in a linear and atomic manner.
@@ -72,11 +74,11 @@ public OperationsRequestBuilder(string rawUrl, IRequestAdapter requestAdapter) :
/// Configuration for the request such as headers, query parameters, and middleware options.
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
#nullable enable
- public RequestInformation ToPostRequestInformation(OpenApiKiotaClientExample.GeneratedCode.Models.OperationsRequestDocument body, Action>? requestConfiguration = default)
+ public RequestInformation ToPostRequestInformation(global::OpenApiKiotaClientExample.GeneratedCode.Models.OperationsRequestDocument body, Action>? requestConfiguration = default)
{
#nullable restore
#else
- public RequestInformation ToPostRequestInformation(OpenApiKiotaClientExample.GeneratedCode.Models.OperationsRequestDocument body, Action> requestConfiguration = default)
+ public RequestInformation ToPostRequestInformation(global::OpenApiKiotaClientExample.GeneratedCode.Models.OperationsRequestDocument body, Action> requestConfiguration = default)
{
#endif
_ = body ?? throw new ArgumentNullException(nameof(body));
@@ -89,11 +91,12 @@ public RequestInformation ToPostRequestInformation(OpenApiKiotaClientExample.Gen
///
/// Returns a request builder with the provided arbitrary URL. Using this method means any other path or query parameters are ignored.
///
- /// A
+ /// A
/// The raw URL to use for the request builder.
- public OpenApiKiotaClientExample.GeneratedCode.Api.Operations.OperationsRequestBuilder WithUrl(string rawUrl)
+ public global::OpenApiKiotaClientExample.GeneratedCode.Api.Operations.OperationsRequestBuilder WithUrl(string rawUrl)
{
- return new OpenApiKiotaClientExample.GeneratedCode.Api.Operations.OperationsRequestBuilder(rawUrl, RequestAdapter);
+ return new global::OpenApiKiotaClientExample.GeneratedCode.Api.Operations.OperationsRequestBuilder(rawUrl, RequestAdapter);
}
}
}
+#pragma warning restore CS0618
diff --git a/src/Examples/OpenApiKiotaClientExample/GeneratedCode/Api/People/Item/AssignedTodoItems/AssignedTodoItemsRequestBuilder.cs b/src/Examples/OpenApiKiotaClientExample/GeneratedCode/Api/People/Item/AssignedTodoItems/AssignedTodoItemsRequestBuilder.cs
index c227373f50..f954c36857 100644
--- a/src/Examples/OpenApiKiotaClientExample/GeneratedCode/Api/People/Item/AssignedTodoItems/AssignedTodoItemsRequestBuilder.cs
+++ b/src/Examples/OpenApiKiotaClientExample/GeneratedCode/Api/People/Item/AssignedTodoItems/AssignedTodoItemsRequestBuilder.cs
@@ -1,10 +1,11 @@
//
+#pragma warning disable CS0618
+using Microsoft.Kiota.Abstractions.Extensions;
using Microsoft.Kiota.Abstractions.Serialization;
using Microsoft.Kiota.Abstractions;
using OpenApiKiotaClientExample.GeneratedCode.Models;
using System.Collections.Generic;
using System.IO;
-using System.Linq;
using System.Threading.Tasks;
using System.Threading;
using System;
@@ -13,10 +14,11 @@ namespace OpenApiKiotaClientExample.GeneratedCode.Api.People.Item.AssignedTodoIt
///
/// Builds and executes requests for operations under \api\people\{id}\assignedTodoItems
///
- public class AssignedTodoItemsRequestBuilder : BaseRequestBuilder
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.18.0")]
+ public partial class AssignedTodoItemsRequestBuilder : BaseRequestBuilder
{
///
- /// Instantiates a new and sets the default values.
+ /// Instantiates a new and sets the default values.
///
/// Path parameters for the request
/// The request adapter to use to execute the requests.
@@ -24,7 +26,7 @@ public AssignedTodoItemsRequestBuilder(Dictionary pathParameters
{
}
///
- /// Instantiates a new and sets the default values.
+ /// Instantiates a new and sets the default values.
///
/// The raw URL to use for the request builder.
/// The request adapter to use to execute the requests.
@@ -34,27 +36,27 @@ public AssignedTodoItemsRequestBuilder(string rawUrl, IRequestAdapter requestAda
///
/// Retrieves the related todoItems of an individual person's assignedTodoItems relationship.
///
- /// A
+ /// A
/// Cancellation token to use when cancelling requests
/// Configuration for the request such as headers, query parameters, and middleware options.
- /// When receiving a 400 status code
- /// When receiving a 404 status code
+ /// When receiving a 400 status code
+ /// When receiving a 404 status code
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
#nullable enable
- public async Task GetAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default)
+ public async Task GetAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default)
{
#nullable restore
#else
- public async Task GetAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default)
+ public async Task GetAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default)
{
#endif
var requestInfo = ToGetRequestInformation(requestConfiguration);
var errorMapping = new Dictionary>
{
- { "400", OpenApiKiotaClientExample.GeneratedCode.Models.ErrorResponseDocument.CreateFromDiscriminatorValue },
- { "404", OpenApiKiotaClientExample.GeneratedCode.Models.ErrorResponseDocument.CreateFromDiscriminatorValue },
+ { "400", global::OpenApiKiotaClientExample.GeneratedCode.Models.ErrorResponseDocument.CreateFromDiscriminatorValue },
+ { "404", global::OpenApiKiotaClientExample.GeneratedCode.Models.ErrorResponseDocument.CreateFromDiscriminatorValue },
};
- return await RequestAdapter.SendAsync(requestInfo, OpenApiKiotaClientExample.GeneratedCode.Models.TodoItemCollectionResponseDocument.CreateFromDiscriminatorValue, errorMapping, cancellationToken).ConfigureAwait(false);
+ return await RequestAdapter.SendAsync(requestInfo, global::OpenApiKiotaClientExample.GeneratedCode.Models.TodoItemCollectionResponseDocument.CreateFromDiscriminatorValue, errorMapping, cancellationToken).ConfigureAwait(false);
}
///
/// Compare the returned ETag HTTP header with an earlier one to determine if the response has changed since it was fetched.
@@ -63,11 +65,11 @@ public AssignedTodoItemsRequestBuilder(string rawUrl, IRequestAdapter requestAda
/// Configuration for the request such as headers, query parameters, and middleware options.
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
#nullable enable
- public async Task HeadAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default)
+ public async Task HeadAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default)
{
#nullable restore
#else
- public async Task HeadAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default)
+ public async Task HeadAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default)
{
#endif
var requestInfo = ToHeadRequestInformation(requestConfiguration);
@@ -80,11 +82,11 @@ public async Task HeadAsync(ActionConfiguration for the request such as headers, query parameters, and middleware options.
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
#nullable enable
- public RequestInformation ToGetRequestInformation(Action>? requestConfiguration = default)
+ public RequestInformation ToGetRequestInformation(Action>? requestConfiguration = default)
{
#nullable restore
#else
- public RequestInformation ToGetRequestInformation(Action> requestConfiguration = default)
+ public RequestInformation ToGetRequestInformation(Action> requestConfiguration = default)
{
#endif
var requestInfo = new RequestInformation(Method.GET, UrlTemplate, PathParameters);
@@ -99,11 +101,11 @@ public RequestInformation ToGetRequestInformation(ActionConfiguration for the request such as headers, query parameters, and middleware options.
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
#nullable enable
- public RequestInformation ToHeadRequestInformation(Action>? requestConfiguration = default)
+ public RequestInformation ToHeadRequestInformation(Action>? requestConfiguration = default)
{
#nullable restore
#else
- public RequestInformation ToHeadRequestInformation(Action> requestConfiguration = default)
+ public RequestInformation ToHeadRequestInformation(Action> requestConfiguration = default)
{
#endif
var requestInfo = new RequestInformation(Method.HEAD, UrlTemplate, PathParameters);
@@ -113,16 +115,17 @@ public RequestInformation ToHeadRequestInformation(Action
/// Returns a request builder with the provided arbitrary URL. Using this method means any other path or query parameters are ignored.
///
- /// A
+ /// A
/// The raw URL to use for the request builder.
- public OpenApiKiotaClientExample.GeneratedCode.Api.People.Item.AssignedTodoItems.AssignedTodoItemsRequestBuilder WithUrl(string rawUrl)
+ public global::OpenApiKiotaClientExample.GeneratedCode.Api.People.Item.AssignedTodoItems.AssignedTodoItemsRequestBuilder WithUrl(string rawUrl)
{
- return new OpenApiKiotaClientExample.GeneratedCode.Api.People.Item.AssignedTodoItems.AssignedTodoItemsRequestBuilder(rawUrl, RequestAdapter);
+ return new global::OpenApiKiotaClientExample.GeneratedCode.Api.People.Item.AssignedTodoItems.AssignedTodoItemsRequestBuilder(rawUrl, RequestAdapter);
}
///
/// Retrieves the related todoItems of an individual person's assignedTodoItems relationship.
///
- public class AssignedTodoItemsRequestBuilderGetQueryParameters
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.18.0")]
+ public partial class AssignedTodoItemsRequestBuilderGetQueryParameters
{
/// For syntax, see the documentation for the [`include`](https://www.jsonapi.net/usage/reading/including-relationships.html)/[`filter`](https://www.jsonapi.net/usage/reading/filtering.html)/[`sort`](https://www.jsonapi.net/usage/reading/sorting.html)/[`page`](https://www.jsonapi.net/usage/reading/pagination.html)/[`fields`](https://www.jsonapi.net/usage/reading/sparse-fieldset-selection.html) query string parameters.
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
@@ -138,7 +141,8 @@ public class AssignedTodoItemsRequestBuilderGetQueryParameters
///
/// Compare the returned ETag HTTP header with an earlier one to determine if the response has changed since it was fetched.
///
- public class AssignedTodoItemsRequestBuilderHeadQueryParameters
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.18.0")]
+ public partial class AssignedTodoItemsRequestBuilderHeadQueryParameters
{
/// For syntax, see the documentation for the [`include`](https://www.jsonapi.net/usage/reading/including-relationships.html)/[`filter`](https://www.jsonapi.net/usage/reading/filtering.html)/[`sort`](https://www.jsonapi.net/usage/reading/sorting.html)/[`page`](https://www.jsonapi.net/usage/reading/pagination.html)/[`fields`](https://www.jsonapi.net/usage/reading/sparse-fieldset-selection.html) query string parameters.
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
@@ -153,3 +157,4 @@ public class AssignedTodoItemsRequestBuilderHeadQueryParameters
}
}
}
+#pragma warning restore CS0618
diff --git a/src/Examples/OpenApiKiotaClientExample/GeneratedCode/Api/People/Item/OwnedTodoItems/OwnedTodoItemsRequestBuilder.cs b/src/Examples/OpenApiKiotaClientExample/GeneratedCode/Api/People/Item/OwnedTodoItems/OwnedTodoItemsRequestBuilder.cs
index 6bd42bf7c1..92c252ac68 100644
--- a/src/Examples/OpenApiKiotaClientExample/GeneratedCode/Api/People/Item/OwnedTodoItems/OwnedTodoItemsRequestBuilder.cs
+++ b/src/Examples/OpenApiKiotaClientExample/GeneratedCode/Api/People/Item/OwnedTodoItems/OwnedTodoItemsRequestBuilder.cs
@@ -1,10 +1,11 @@
//
+#pragma warning disable CS0618
+using Microsoft.Kiota.Abstractions.Extensions;
using Microsoft.Kiota.Abstractions.Serialization;
using Microsoft.Kiota.Abstractions;
using OpenApiKiotaClientExample.GeneratedCode.Models;
using System.Collections.Generic;
using System.IO;
-using System.Linq;
using System.Threading.Tasks;
using System.Threading;
using System;
@@ -13,10 +14,11 @@ namespace OpenApiKiotaClientExample.GeneratedCode.Api.People.Item.OwnedTodoItems
///
/// Builds and executes requests for operations under \api\people\{id}\ownedTodoItems
///
- public class OwnedTodoItemsRequestBuilder : BaseRequestBuilder
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.18.0")]
+ public partial class OwnedTodoItemsRequestBuilder : BaseRequestBuilder
{
///
- /// Instantiates a new and sets the default values.
+ /// Instantiates a new and sets the default values.
///
/// Path parameters for the request
/// The request adapter to use to execute the requests.
@@ -24,7 +26,7 @@ public OwnedTodoItemsRequestBuilder(Dictionary pathParameters, I
{
}
///
- /// Instantiates a new and sets the default values.
+ /// Instantiates a new and sets the default values.
///
/// The raw URL to use for the request builder.
/// The request adapter to use to execute the requests.
@@ -34,27 +36,27 @@ public OwnedTodoItemsRequestBuilder(string rawUrl, IRequestAdapter requestAdapte
///
/// Retrieves the related todoItems of an individual person's ownedTodoItems relationship.
///
- /// A
+ /// A
/// Cancellation token to use when cancelling requests
/// Configuration for the request such as headers, query parameters, and middleware options.
- /// When receiving a 400 status code
- /// When receiving a 404 status code
+ /// When receiving a 400 status code
+ /// When receiving a 404 status code
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
#nullable enable
- public async Task GetAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default)
+ public async Task GetAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default)
{
#nullable restore
#else
- public async Task GetAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default)
+ public async Task GetAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default)
{
#endif
var requestInfo = ToGetRequestInformation(requestConfiguration);
var errorMapping = new Dictionary>
{
- { "400", OpenApiKiotaClientExample.GeneratedCode.Models.ErrorResponseDocument.CreateFromDiscriminatorValue },
- { "404", OpenApiKiotaClientExample.GeneratedCode.Models.ErrorResponseDocument.CreateFromDiscriminatorValue },
+ { "400", global::OpenApiKiotaClientExample.GeneratedCode.Models.ErrorResponseDocument.CreateFromDiscriminatorValue },
+ { "404", global::OpenApiKiotaClientExample.GeneratedCode.Models.ErrorResponseDocument.CreateFromDiscriminatorValue },
};
- return await RequestAdapter.SendAsync(requestInfo, OpenApiKiotaClientExample.GeneratedCode.Models.TodoItemCollectionResponseDocument.CreateFromDiscriminatorValue, errorMapping, cancellationToken).ConfigureAwait(false);
+ return await RequestAdapter.SendAsync(requestInfo, global::OpenApiKiotaClientExample.GeneratedCode.Models.TodoItemCollectionResponseDocument.CreateFromDiscriminatorValue, errorMapping, cancellationToken).ConfigureAwait(false);
}
///
/// Compare the returned ETag HTTP header with an earlier one to determine if the response has changed since it was fetched.
@@ -63,11 +65,11 @@ public OwnedTodoItemsRequestBuilder(string rawUrl, IRequestAdapter requestAdapte
/// Configuration for the request such as headers, query parameters, and middleware options.
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
#nullable enable
- public async Task HeadAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default)
+ public async Task HeadAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default)
{
#nullable restore
#else
- public async Task HeadAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default)
+ public async Task HeadAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default)
{
#endif
var requestInfo = ToHeadRequestInformation(requestConfiguration);
@@ -80,11 +82,11 @@ public async Task HeadAsync(ActionConfiguration for the request such as headers, query parameters, and middleware options.
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
#nullable enable
- public RequestInformation ToGetRequestInformation(Action>? requestConfiguration = default)
+ public RequestInformation ToGetRequestInformation(Action>? requestConfiguration = default)
{
#nullable restore
#else
- public RequestInformation ToGetRequestInformation(Action> requestConfiguration = default)
+ public RequestInformation ToGetRequestInformation(Action> requestConfiguration = default)
{
#endif
var requestInfo = new RequestInformation(Method.GET, UrlTemplate, PathParameters);
@@ -99,11 +101,11 @@ public RequestInformation ToGetRequestInformation(ActionConfiguration for the request such as headers, query parameters, and middleware options.
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
#nullable enable
- public RequestInformation ToHeadRequestInformation(Action>? requestConfiguration = default)
+ public RequestInformation ToHeadRequestInformation(Action>? requestConfiguration = default)
{
#nullable restore
#else
- public RequestInformation ToHeadRequestInformation(Action> requestConfiguration = default)
+ public RequestInformation ToHeadRequestInformation(Action> requestConfiguration = default)
{
#endif
var requestInfo = new RequestInformation(Method.HEAD, UrlTemplate, PathParameters);
@@ -113,16 +115,17 @@ public RequestInformation ToHeadRequestInformation(Action
/// Returns a request builder with the provided arbitrary URL. Using this method means any other path or query parameters are ignored.
///
- /// A
+ /// A
/// The raw URL to use for the request builder.
- public OpenApiKiotaClientExample.GeneratedCode.Api.People.Item.OwnedTodoItems.OwnedTodoItemsRequestBuilder WithUrl(string rawUrl)
+ public global::OpenApiKiotaClientExample.GeneratedCode.Api.People.Item.OwnedTodoItems.OwnedTodoItemsRequestBuilder WithUrl(string rawUrl)
{
- return new OpenApiKiotaClientExample.GeneratedCode.Api.People.Item.OwnedTodoItems.OwnedTodoItemsRequestBuilder(rawUrl, RequestAdapter);
+ return new global::OpenApiKiotaClientExample.GeneratedCode.Api.People.Item.OwnedTodoItems.OwnedTodoItemsRequestBuilder(rawUrl, RequestAdapter);
}
///
/// Retrieves the related todoItems of an individual person's ownedTodoItems relationship.
///
- public class OwnedTodoItemsRequestBuilderGetQueryParameters
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.18.0")]
+ public partial class OwnedTodoItemsRequestBuilderGetQueryParameters
{
/// For syntax, see the documentation for the [`include`](https://www.jsonapi.net/usage/reading/including-relationships.html)/[`filter`](https://www.jsonapi.net/usage/reading/filtering.html)/[`sort`](https://www.jsonapi.net/usage/reading/sorting.html)/[`page`](https://www.jsonapi.net/usage/reading/pagination.html)/[`fields`](https://www.jsonapi.net/usage/reading/sparse-fieldset-selection.html) query string parameters.
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
@@ -138,7 +141,8 @@ public class OwnedTodoItemsRequestBuilderGetQueryParameters
///
/// Compare the returned ETag HTTP header with an earlier one to determine if the response has changed since it was fetched.
///
- public class OwnedTodoItemsRequestBuilderHeadQueryParameters
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.18.0")]
+ public partial class OwnedTodoItemsRequestBuilderHeadQueryParameters
{
/// For syntax, see the documentation for the [`include`](https://www.jsonapi.net/usage/reading/including-relationships.html)/[`filter`](https://www.jsonapi.net/usage/reading/filtering.html)/[`sort`](https://www.jsonapi.net/usage/reading/sorting.html)/[`page`](https://www.jsonapi.net/usage/reading/pagination.html)/[`fields`](https://www.jsonapi.net/usage/reading/sparse-fieldset-selection.html) query string parameters.
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
@@ -153,3 +157,4 @@ public class OwnedTodoItemsRequestBuilderHeadQueryParameters
}
}
}
+#pragma warning restore CS0618
diff --git a/src/Examples/OpenApiKiotaClientExample/GeneratedCode/Api/People/Item/PeopleItemRequestBuilder.cs b/src/Examples/OpenApiKiotaClientExample/GeneratedCode/Api/People/Item/PeopleItemRequestBuilder.cs
index 250d9c9056..4ddec2b584 100644
--- a/src/Examples/OpenApiKiotaClientExample/GeneratedCode/Api/People/Item/PeopleItemRequestBuilder.cs
+++ b/src/Examples/OpenApiKiotaClientExample/GeneratedCode/Api/People/Item/PeopleItemRequestBuilder.cs
@@ -1,4 +1,6 @@
//
+#pragma warning disable CS0618
+using Microsoft.Kiota.Abstractions.Extensions;
using Microsoft.Kiota.Abstractions.Serialization;
using Microsoft.Kiota.Abstractions;
using OpenApiKiotaClientExample.GeneratedCode.Api.People.Item.AssignedTodoItems;
@@ -7,7 +9,6 @@
using OpenApiKiotaClientExample.GeneratedCode.Models;
using System.Collections.Generic;
using System.IO;
-using System.Linq;
using System.Threading.Tasks;
using System.Threading;
using System;
@@ -16,25 +17,26 @@ namespace OpenApiKiotaClientExample.GeneratedCode.Api.People.Item
///
/// Builds and executes requests for operations under \api\people\{id}
///
- public class PeopleItemRequestBuilder : BaseRequestBuilder
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.18.0")]
+ public partial class PeopleItemRequestBuilder : BaseRequestBuilder
{
/// The assignedTodoItems property
- public OpenApiKiotaClientExample.GeneratedCode.Api.People.Item.AssignedTodoItems.AssignedTodoItemsRequestBuilder AssignedTodoItems
+ public global::OpenApiKiotaClientExample.GeneratedCode.Api.People.Item.AssignedTodoItems.AssignedTodoItemsRequestBuilder AssignedTodoItems
{
- get => new OpenApiKiotaClientExample.GeneratedCode.Api.People.Item.AssignedTodoItems.AssignedTodoItemsRequestBuilder(PathParameters, RequestAdapter);
+ get => new global::OpenApiKiotaClientExample.GeneratedCode.Api.People.Item.AssignedTodoItems.AssignedTodoItemsRequestBuilder(PathParameters, RequestAdapter);
}
/// The ownedTodoItems property
- public OpenApiKiotaClientExample.GeneratedCode.Api.People.Item.OwnedTodoItems.OwnedTodoItemsRequestBuilder OwnedTodoItems
+ public global::OpenApiKiotaClientExample.GeneratedCode.Api.People.Item.OwnedTodoItems.OwnedTodoItemsRequestBuilder OwnedTodoItems
{
- get => new OpenApiKiotaClientExample.GeneratedCode.Api.People.Item.OwnedTodoItems.OwnedTodoItemsRequestBuilder(PathParameters, RequestAdapter);
+ get => new global::OpenApiKiotaClientExample.GeneratedCode.Api.People.Item.OwnedTodoItems.OwnedTodoItemsRequestBuilder(PathParameters, RequestAdapter);
}
/// The relationships property
- public OpenApiKiotaClientExample.GeneratedCode.Api.People.Item.Relationships.RelationshipsRequestBuilder Relationships
+ public global::OpenApiKiotaClientExample.GeneratedCode.Api.People.Item.Relationships.RelationshipsRequestBuilder Relationships
{
- get => new OpenApiKiotaClientExample.GeneratedCode.Api.People.Item.Relationships.RelationshipsRequestBuilder(PathParameters, RequestAdapter);
+ get => new global::OpenApiKiotaClientExample.GeneratedCode.Api.People.Item.Relationships.RelationshipsRequestBuilder(PathParameters, RequestAdapter);
}
///
- /// Instantiates a new and sets the default values.
+ /// Instantiates a new and sets the default values.
///
/// Path parameters for the request
/// The request adapter to use to execute the requests.
@@ -42,7 +44,7 @@ public PeopleItemRequestBuilder(Dictionary pathParameters, IRequ
{
}
///
- /// Instantiates a new and sets the default values.
+ /// Instantiates a new and sets the default values.
///
/// The raw URL to use for the request builder.
/// The request adapter to use to execute the requests.
@@ -54,7 +56,7 @@ public PeopleItemRequestBuilder(string rawUrl, IRequestAdapter requestAdapter) :
///
/// Cancellation token to use when cancelling requests
/// Configuration for the request such as headers, query parameters, and middleware options.
- /// When receiving a 404 status code
+ /// When receiving a 404 status code
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
#nullable enable
public async Task DeleteAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default)
@@ -67,34 +69,34 @@ public async Task DeleteAsync(Action>
{
- { "404", OpenApiKiotaClientExample.GeneratedCode.Models.ErrorResponseDocument.CreateFromDiscriminatorValue },
+ { "404", global::OpenApiKiotaClientExample.GeneratedCode.Models.ErrorResponseDocument.CreateFromDiscriminatorValue },
};
await RequestAdapter.SendNoContentAsync(requestInfo, errorMapping, cancellationToken).ConfigureAwait(false);
}
///
/// Retrieves an individual person by its identifier.
///
- /// A
+ /// A
/// Cancellation token to use when cancelling requests
/// Configuration for the request such as headers, query parameters, and middleware options.
- /// When receiving a 400 status code
- /// When receiving a 404 status code
+ /// When receiving a 400 status code
+ /// When receiving a 404 status code
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
#nullable enable
- public async Task GetAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default)
+ public async Task GetAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default)
{
#nullable restore
#else
- public async Task GetAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default)
+ public async Task GetAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default)
{
#endif
var requestInfo = ToGetRequestInformation(requestConfiguration);
var errorMapping = new Dictionary>
{
- { "400", OpenApiKiotaClientExample.GeneratedCode.Models.ErrorResponseDocument.CreateFromDiscriminatorValue },
- { "404", OpenApiKiotaClientExample.GeneratedCode.Models.ErrorResponseDocument.CreateFromDiscriminatorValue },
+ { "400", global::OpenApiKiotaClientExample.GeneratedCode.Models.ErrorResponseDocument.CreateFromDiscriminatorValue },
+ { "404", global::OpenApiKiotaClientExample.GeneratedCode.Models.ErrorResponseDocument.CreateFromDiscriminatorValue },
};
- return await RequestAdapter.SendAsync(requestInfo, OpenApiKiotaClientExample.GeneratedCode.Models.PersonPrimaryResponseDocument.CreateFromDiscriminatorValue, errorMapping, cancellationToken).ConfigureAwait(false);
+ return await RequestAdapter.SendAsync(requestInfo, global::OpenApiKiotaClientExample.GeneratedCode.Models.PersonPrimaryResponseDocument.CreateFromDiscriminatorValue, errorMapping, cancellationToken).ConfigureAwait(false);
}
///
/// Compare the returned ETag HTTP header with an earlier one to determine if the response has changed since it was fetched.
@@ -103,11 +105,11 @@ public async Task DeleteAsync(ActionConfiguration for the request such as headers, query parameters, and middleware options.
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
#nullable enable
- public async Task HeadAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default)
+ public async Task HeadAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default)
{
#nullable restore
#else
- public async Task HeadAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default)
+ public async Task HeadAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default)
{
#endif
var requestInfo = ToHeadRequestInformation(requestConfiguration);
@@ -116,33 +118,33 @@ public async Task HeadAsync(Action
/// Updates an existing person.
///
- /// A
+ /// A
/// The request body
/// Cancellation token to use when cancelling requests
/// Configuration for the request such as headers, query parameters, and middleware options.
- /// When receiving a 400 status code
- /// When receiving a 404 status code
- /// When receiving a 409 status code
- /// When receiving a 422 status code
+ /// When receiving a 400 status code
+ /// When receiving a 404 status code
+ /// When receiving a 409 status code
+ /// When receiving a 422 status code
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
#nullable enable
- public async Task PatchAsync(OpenApiKiotaClientExample.GeneratedCode.Models.UpdatePersonRequestDocument body, Action>? requestConfiguration = default, CancellationToken cancellationToken = default)
+ public async Task PatchAsync(global::OpenApiKiotaClientExample.GeneratedCode.Models.UpdatePersonRequestDocument body, Action>? requestConfiguration = default, CancellationToken cancellationToken = default)
{
#nullable restore
#else
- public async Task PatchAsync(OpenApiKiotaClientExample.GeneratedCode.Models.UpdatePersonRequestDocument body, Action> requestConfiguration = default, CancellationToken cancellationToken = default)
+ public async Task PatchAsync(global::OpenApiKiotaClientExample.GeneratedCode.Models.UpdatePersonRequestDocument body, Action> requestConfiguration = default, CancellationToken cancellationToken = default)
{
#endif
_ = body ?? throw new ArgumentNullException(nameof(body));
var requestInfo = ToPatchRequestInformation(body, requestConfiguration);
var errorMapping = new Dictionary>
{
- { "400", OpenApiKiotaClientExample.GeneratedCode.Models.ErrorResponseDocument.CreateFromDiscriminatorValue },
- { "404", OpenApiKiotaClientExample.GeneratedCode.Models.ErrorResponseDocument.CreateFromDiscriminatorValue },
- { "409", OpenApiKiotaClientExample.GeneratedCode.Models.ErrorResponseDocument.CreateFromDiscriminatorValue },
- { "422", OpenApiKiotaClientExample.GeneratedCode.Models.ErrorResponseDocument.CreateFromDiscriminatorValue },
+ { "400", global::OpenApiKiotaClientExample.GeneratedCode.Models.ErrorResponseDocument.CreateFromDiscriminatorValue },
+ { "404", global::OpenApiKiotaClientExample.GeneratedCode.Models.ErrorResponseDocument.CreateFromDiscriminatorValue },
+ { "409", global::OpenApiKiotaClientExample.GeneratedCode.Models.ErrorResponseDocument.CreateFromDiscriminatorValue },
+ { "422", global::OpenApiKiotaClientExample.GeneratedCode.Models.ErrorResponseDocument.CreateFromDiscriminatorValue },
};
- return await RequestAdapter.SendAsync(requestInfo, OpenApiKiotaClientExample.GeneratedCode.Models.PersonPrimaryResponseDocument.CreateFromDiscriminatorValue, errorMapping, cancellationToken).ConfigureAwait(false);
+ return await RequestAdapter.SendAsync(requestInfo, global::OpenApiKiotaClientExample.GeneratedCode.Models.PersonPrimaryResponseDocument.CreateFromDiscriminatorValue, errorMapping, cancellationToken).ConfigureAwait(false);
}
///
/// Deletes an existing person by its identifier.
@@ -170,11 +172,11 @@ public RequestInformation ToDeleteRequestInformation(ActionConfiguration for the request such as headers, query parameters, and middleware options.
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
#nullable enable
- public RequestInformation ToGetRequestInformation(Action>? requestConfiguration = default)
+ public RequestInformation ToGetRequestInformation(Action>? requestConfiguration = default)
{
#nullable restore
#else
- public RequestInformation ToGetRequestInformation(Action> requestConfiguration = default)
+ public RequestInformation ToGetRequestInformation(Action> requestConfiguration = default)
{
#endif
var requestInfo = new RequestInformation(Method.GET, UrlTemplate, PathParameters);
@@ -189,11 +191,11 @@ public RequestInformation ToGetRequestInformation(ActionConfiguration for the request such as headers, query parameters, and middleware options.
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
#nullable enable
- public RequestInformation ToHeadRequestInformation(Action>? requestConfiguration = default)
+ public RequestInformation ToHeadRequestInformation(Action>? requestConfiguration = default)
{
#nullable restore
#else
- public RequestInformation ToHeadRequestInformation(Action> requestConfiguration = default)
+ public RequestInformation ToHeadRequestInformation(Action> requestConfiguration = default)
{
#endif
var requestInfo = new RequestInformation(Method.HEAD, UrlTemplate, PathParameters);
@@ -208,11 +210,11 @@ public RequestInformation ToHeadRequestInformation(ActionConfiguration for the request such as headers, query parameters, and middleware options.
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
#nullable enable
- public RequestInformation ToPatchRequestInformation(OpenApiKiotaClientExample.GeneratedCode.Models.UpdatePersonRequestDocument body, Action>? requestConfiguration = default)
+ public RequestInformation ToPatchRequestInformation(global::OpenApiKiotaClientExample.GeneratedCode.Models.UpdatePersonRequestDocument body, Action>? requestConfiguration = default)
{
#nullable restore
#else
- public RequestInformation ToPatchRequestInformation(OpenApiKiotaClientExample.GeneratedCode.Models.UpdatePersonRequestDocument body, Action> requestConfiguration = default)
+ public RequestInformation ToPatchRequestInformation(global::OpenApiKiotaClientExample.GeneratedCode.Models.UpdatePersonRequestDocument body, Action> requestConfiguration = default)
{
#endif
_ = body ?? throw new ArgumentNullException(nameof(body));
@@ -225,16 +227,17 @@ public RequestInformation ToPatchRequestInformation(OpenApiKiotaClientExample.Ge
///
/// Returns a request builder with the provided arbitrary URL. Using this method means any other path or query parameters are ignored.
///
- /// A
+ /// A
/// The raw URL to use for the request builder.
- public OpenApiKiotaClientExample.GeneratedCode.Api.People.Item.PeopleItemRequestBuilder WithUrl(string rawUrl)
+ public global::OpenApiKiotaClientExample.GeneratedCode.Api.People.Item.PeopleItemRequestBuilder WithUrl(string rawUrl)
{
- return new OpenApiKiotaClientExample.GeneratedCode.Api.People.Item.PeopleItemRequestBuilder(rawUrl, RequestAdapter);
+ return new global::OpenApiKiotaClientExample.GeneratedCode.Api.People.Item.PeopleItemRequestBuilder(rawUrl, RequestAdapter);
}
///
/// Retrieves an individual person by its identifier.
///
- public class PeopleItemRequestBuilderGetQueryParameters
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.18.0")]
+ public partial class PeopleItemRequestBuilderGetQueryParameters
{
/// For syntax, see the documentation for the [`include`](https://www.jsonapi.net/usage/reading/including-relationships.html)/[`filter`](https://www.jsonapi.net/usage/reading/filtering.html)/[`sort`](https://www.jsonapi.net/usage/reading/sorting.html)/[`page`](https://www.jsonapi.net/usage/reading/pagination.html)/[`fields`](https://www.jsonapi.net/usage/reading/sparse-fieldset-selection.html) query string parameters.
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
@@ -250,7 +253,8 @@ public class PeopleItemRequestBuilderGetQueryParameters
///
/// Compare the returned ETag HTTP header with an earlier one to determine if the response has changed since it was fetched.
///
- public class PeopleItemRequestBuilderHeadQueryParameters
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.18.0")]
+ public partial class PeopleItemRequestBuilderHeadQueryParameters
{
/// For syntax, see the documentation for the [`include`](https://www.jsonapi.net/usage/reading/including-relationships.html)/[`filter`](https://www.jsonapi.net/usage/reading/filtering.html)/[`sort`](https://www.jsonapi.net/usage/reading/sorting.html)/[`page`](https://www.jsonapi.net/usage/reading/pagination.html)/[`fields`](https://www.jsonapi.net/usage/reading/sparse-fieldset-selection.html) query string parameters.
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
@@ -266,7 +270,8 @@ public class PeopleItemRequestBuilderHeadQueryParameters
///
/// Updates an existing person.
///
- public class PeopleItemRequestBuilderPatchQueryParameters
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.18.0")]
+ public partial class PeopleItemRequestBuilderPatchQueryParameters
{
/// For syntax, see the documentation for the [`include`](https://www.jsonapi.net/usage/reading/including-relationships.html)/[`filter`](https://www.jsonapi.net/usage/reading/filtering.html)/[`sort`](https://www.jsonapi.net/usage/reading/sorting.html)/[`page`](https://www.jsonapi.net/usage/reading/pagination.html)/[`fields`](https://www.jsonapi.net/usage/reading/sparse-fieldset-selection.html) query string parameters.
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
@@ -281,3 +286,4 @@ public class PeopleItemRequestBuilderPatchQueryParameters
}
}
}
+#pragma warning restore CS0618
diff --git a/src/Examples/OpenApiKiotaClientExample/GeneratedCode/Api/People/Item/Relationships/AssignedTodoItems/AssignedTodoItemsRequestBuilder.cs b/src/Examples/OpenApiKiotaClientExample/GeneratedCode/Api/People/Item/Relationships/AssignedTodoItems/AssignedTodoItemsRequestBuilder.cs
index ce90b973b9..c4168d225f 100644
--- a/src/Examples/OpenApiKiotaClientExample/GeneratedCode/Api/People/Item/Relationships/AssignedTodoItems/AssignedTodoItemsRequestBuilder.cs
+++ b/src/Examples/OpenApiKiotaClientExample/GeneratedCode/Api/People/Item/Relationships/AssignedTodoItems/AssignedTodoItemsRequestBuilder.cs
@@ -1,10 +1,11 @@
//
+#pragma warning disable CS0618
+using Microsoft.Kiota.Abstractions.Extensions;
using Microsoft.Kiota.Abstractions.Serialization;
using Microsoft.Kiota.Abstractions;
using OpenApiKiotaClientExample.GeneratedCode.Models;
using System.Collections.Generic;
using System.IO;
-using System.Linq;
using System.Threading.Tasks;
using System.Threading;
using System;
@@ -13,10 +14,11 @@ namespace OpenApiKiotaClientExample.GeneratedCode.Api.People.Item.Relationships.
///
/// Builds and executes requests for operations under \api\people\{id}\relationships\assignedTodoItems
///
- public class AssignedTodoItemsRequestBuilder : BaseRequestBuilder
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.18.0")]
+ public partial class AssignedTodoItemsRequestBuilder : BaseRequestBuilder
{
///
- /// Instantiates a new and sets the default values.
+ /// Instantiates a new and sets the default values.
///
/// Path parameters for the request
/// The request adapter to use to execute the requests.
@@ -24,7 +26,7 @@ public AssignedTodoItemsRequestBuilder(Dictionary pathParameters
{
}
///
- /// Instantiates a new and sets the default values.
+ /// Instantiates a new and sets the default values.
///
/// The raw URL to use for the request builder.
/// The request adapter to use to execute the requests.
@@ -37,52 +39,52 @@ public AssignedTodoItemsRequestBuilder(string rawUrl, IRequestAdapter requestAda
/// The request body
/// Cancellation token to use when cancelling requests
/// Configuration for the request such as headers, query parameters, and middleware options.
- /// When receiving a 400 status code
- /// When receiving a 404 status code
- /// When receiving a 409 status code
+ /// When receiving a 400 status code
+ /// When receiving a 404 status code
+ /// When receiving a 409 status code
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
#nullable enable
- public async Task DeleteAsync(OpenApiKiotaClientExample.GeneratedCode.Models.ToManyTodoItemInRequest body, Action>? requestConfiguration = default, CancellationToken cancellationToken = default)
+ public async Task DeleteAsync(global::OpenApiKiotaClientExample.GeneratedCode.Models.ToManyTodoItemInRequest body, Action>? requestConfiguration = default, CancellationToken cancellationToken = default)
{
#nullable restore
#else
- public async Task DeleteAsync(OpenApiKiotaClientExample.GeneratedCode.Models.ToManyTodoItemInRequest body, Action> requestConfiguration = default, CancellationToken cancellationToken = default)
+ public async Task DeleteAsync(global::OpenApiKiotaClientExample.GeneratedCode.Models.ToManyTodoItemInRequest body, Action> requestConfiguration = default, CancellationToken cancellationToken = default)
{
#endif
_ = body ?? throw new ArgumentNullException(nameof(body));
var requestInfo = ToDeleteRequestInformation(body, requestConfiguration);
var errorMapping = new Dictionary>
{
- { "400", OpenApiKiotaClientExample.GeneratedCode.Models.ErrorResponseDocument.CreateFromDiscriminatorValue },
- { "404", OpenApiKiotaClientExample.GeneratedCode.Models.ErrorResponseDocument.CreateFromDiscriminatorValue },
- { "409", OpenApiKiotaClientExample.GeneratedCode.Models.ErrorResponseDocument.CreateFromDiscriminatorValue },
+ { "400", global::OpenApiKiotaClientExample.GeneratedCode.Models.ErrorResponseDocument.CreateFromDiscriminatorValue },
+ { "404", global::OpenApiKiotaClientExample.GeneratedCode.Models.ErrorResponseDocument.CreateFromDiscriminatorValue },
+ { "409", global::OpenApiKiotaClientExample.GeneratedCode.Models.ErrorResponseDocument.CreateFromDiscriminatorValue },
};
await RequestAdapter.SendNoContentAsync(requestInfo, errorMapping, cancellationToken).ConfigureAwait(false);
}
///
/// Retrieves the related todoItem identities of an individual person's assignedTodoItems relationship.
///
- /// A
+ /// A
/// Cancellation token to use when cancelling requests
/// Configuration for the request such as headers, query parameters, and middleware options.
- /// When receiving a 400 status code
- /// When receiving a 404 status code
+ /// When receiving a 400 status code
+ /// When receiving a 404 status code
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
#nullable enable
- public async Task GetAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default)
+ public async Task GetAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default)
{
#nullable restore
#else
- public async Task GetAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default)
+ public async Task GetAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default)
{
#endif
var requestInfo = ToGetRequestInformation(requestConfiguration);
var errorMapping = new Dictionary>
{
- { "400", OpenApiKiotaClientExample.GeneratedCode.Models.ErrorResponseDocument.CreateFromDiscriminatorValue },
- { "404", OpenApiKiotaClientExample.GeneratedCode.Models.ErrorResponseDocument.CreateFromDiscriminatorValue },
+ { "400", global::OpenApiKiotaClientExample.GeneratedCode.Models.ErrorResponseDocument.CreateFromDiscriminatorValue },
+ { "404", global::OpenApiKiotaClientExample.GeneratedCode.Models.ErrorResponseDocument.CreateFromDiscriminatorValue },
};
- return await RequestAdapter.SendAsync(requestInfo, OpenApiKiotaClientExample.GeneratedCode.Models.TodoItemIdentifierCollectionResponseDocument.CreateFromDiscriminatorValue, errorMapping, cancellationToken).ConfigureAwait(false);
+ return await RequestAdapter.SendAsync(requestInfo, global::OpenApiKiotaClientExample.GeneratedCode.Models.TodoItemIdentifierCollectionResponseDocument.CreateFromDiscriminatorValue, errorMapping, cancellationToken).ConfigureAwait(false);
}
///
/// Compare the returned ETag HTTP header with an earlier one to determine if the response has changed since it was fetched.
@@ -91,11 +93,11 @@ public async Task DeleteAsync(OpenApiKiotaClientExample.GeneratedCode.Models.ToM
/// Configuration for the request such as headers, query parameters, and middleware options.
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
#nullable enable
- public async Task HeadAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default)
+ public async Task HeadAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default)
{
#nullable restore
#else
- public async Task HeadAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default)
+ public async Task HeadAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default)
{
#endif
var requestInfo = ToHeadRequestInformation(requestConfiguration);
@@ -107,25 +109,25 @@ public async Task HeadAsync(ActionThe request body
/// Cancellation token to use when cancelling requests
/// Configuration for the request such as headers, query parameters, and middleware options.
- /// When receiving a 400 status code
- /// When receiving a 404 status code
- /// When receiving a 409 status code
+ /// When receiving a 400 status code
+ /// When receiving a 404 status code
+ /// When receiving a 409 status code
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
#nullable enable
- public async Task PatchAsync(OpenApiKiotaClientExample.GeneratedCode.Models.ToManyTodoItemInRequest body, Action>? requestConfiguration = default, CancellationToken cancellationToken = default)
+ public async Task PatchAsync(global::OpenApiKiotaClientExample.GeneratedCode.Models.ToManyTodoItemInRequest body, Action>? requestConfiguration = default, CancellationToken cancellationToken = default)
{
#nullable restore
#else
- public async Task PatchAsync(OpenApiKiotaClientExample.GeneratedCode.Models.ToManyTodoItemInRequest body, Action> requestConfiguration = default, CancellationToken cancellationToken = default)
+ public async Task PatchAsync(global::OpenApiKiotaClientExample.GeneratedCode.Models.ToManyTodoItemInRequest body, Action> requestConfiguration = default, CancellationToken cancellationToken = default)
{
#endif
_ = body ?? throw new ArgumentNullException(nameof(body));
var requestInfo = ToPatchRequestInformation(body, requestConfiguration);
var errorMapping = new Dictionary>
{
- { "400", OpenApiKiotaClientExample.GeneratedCode.Models.ErrorResponseDocument.CreateFromDiscriminatorValue },
- { "404", OpenApiKiotaClientExample.GeneratedCode.Models.ErrorResponseDocument.CreateFromDiscriminatorValue },
- { "409", OpenApiKiotaClientExample.GeneratedCode.Models.ErrorResponseDocument.CreateFromDiscriminatorValue },
+ { "400", global::OpenApiKiotaClientExample.GeneratedCode.Models.ErrorResponseDocument.CreateFromDiscriminatorValue },
+ { "404", global::OpenApiKiotaClientExample.GeneratedCode.Models.ErrorResponseDocument.CreateFromDiscriminatorValue },
+ { "409", global::OpenApiKiotaClientExample.GeneratedCode.Models.ErrorResponseDocument.CreateFromDiscriminatorValue },
};
await RequestAdapter.SendNoContentAsync(requestInfo, errorMapping, cancellationToken).ConfigureAwait(false);
}
@@ -135,25 +137,25 @@ public async Task PatchAsync(OpenApiKiotaClientExample.GeneratedCode.Models.ToMa
/// The request body
/// Cancellation token to use when cancelling requests
/// Configuration for the request such as headers, query parameters, and middleware options.
- /// When receiving a 400 status code
- /// When receiving a 404 status code
- /// When receiving a 409 status code
+ /// When receiving a 400 status code
+ /// When receiving a 404 status code
+ /// When receiving a 409 status code
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
#nullable enable
- public async Task PostAsync(OpenApiKiotaClientExample.GeneratedCode.Models.ToManyTodoItemInRequest body, Action>? requestConfiguration = default, CancellationToken cancellationToken = default)
+ public async Task PostAsync(global::OpenApiKiotaClientExample.GeneratedCode.Models.ToManyTodoItemInRequest body, Action>? requestConfiguration = default, CancellationToken cancellationToken = default)
{
#nullable restore
#else
- public async Task PostAsync(OpenApiKiotaClientExample.GeneratedCode.Models.ToManyTodoItemInRequest body, Action> requestConfiguration = default, CancellationToken cancellationToken = default)
+ public async Task PostAsync(global::OpenApiKiotaClientExample.GeneratedCode.Models.ToManyTodoItemInRequest body, Action> requestConfiguration = default, CancellationToken cancellationToken = default)
{
#endif
_ = body ?? throw new ArgumentNullException(nameof(body));
var requestInfo = ToPostRequestInformation(body, requestConfiguration);
var errorMapping = new Dictionary>
{
- { "400", OpenApiKiotaClientExample.GeneratedCode.Models.ErrorResponseDocument.CreateFromDiscriminatorValue },
- { "404", OpenApiKiotaClientExample.GeneratedCode.Models.ErrorResponseDocument.CreateFromDiscriminatorValue },
- { "409", OpenApiKiotaClientExample.GeneratedCode.Models.ErrorResponseDocument.CreateFromDiscriminatorValue },
+ { "400", global::OpenApiKiotaClientExample.GeneratedCode.Models.ErrorResponseDocument.CreateFromDiscriminatorValue },
+ { "404", global::OpenApiKiotaClientExample.GeneratedCode.Models.ErrorResponseDocument.CreateFromDiscriminatorValue },
+ { "409", global::OpenApiKiotaClientExample.GeneratedCode.Models.ErrorResponseDocument.CreateFromDiscriminatorValue },
};
await RequestAdapter.SendNoContentAsync(requestInfo, errorMapping, cancellationToken).ConfigureAwait(false);
}
@@ -165,11 +167,11 @@ public async Task PostAsync(OpenApiKiotaClientExample.GeneratedCode.Models.ToMan
/// Configuration for the request such as headers, query parameters, and middleware options.
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
#nullable enable
- public RequestInformation ToDeleteRequestInformation(OpenApiKiotaClientExample.GeneratedCode.Models.ToManyTodoItemInRequest body, Action>? requestConfiguration = default)
+ public RequestInformation ToDeleteRequestInformation(global::OpenApiKiotaClientExample.GeneratedCode.Models.ToManyTodoItemInRequest body, Action>? requestConfiguration = default)
{
#nullable restore
#else
- public RequestInformation ToDeleteRequestInformation(OpenApiKiotaClientExample.GeneratedCode.Models.ToManyTodoItemInRequest body, Action> requestConfiguration = default)
+ public RequestInformation ToDeleteRequestInformation(global::OpenApiKiotaClientExample.GeneratedCode.Models.ToManyTodoItemInRequest body, Action> requestConfiguration = default)
{
#endif
_ = body ?? throw new ArgumentNullException(nameof(body));
@@ -186,11 +188,11 @@ public RequestInformation ToDeleteRequestInformation(OpenApiKiotaClientExample.G
/// Configuration for the request such as headers, query parameters, and middleware options.
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
#nullable enable
- public RequestInformation ToGetRequestInformation(Action>? requestConfiguration = default)
+ public RequestInformation ToGetRequestInformation(Action>? requestConfiguration = default)
{
#nullable restore
#else
- public RequestInformation ToGetRequestInformation(Action> requestConfiguration = default)
+ public RequestInformation ToGetRequestInformation(Action> requestConfiguration = default)
{
#endif
var requestInfo = new RequestInformation(Method.GET, UrlTemplate, PathParameters);
@@ -205,11 +207,11 @@ public RequestInformation ToGetRequestInformation(ActionConfiguration for the request such as headers, query parameters, and middleware options.
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
#nullable enable
- public RequestInformation ToHeadRequestInformation(Action>? requestConfiguration = default)
+ public RequestInformation ToHeadRequestInformation(Action>? requestConfiguration = default)
{
#nullable restore
#else
- public RequestInformation ToHeadRequestInformation(Action> requestConfiguration = default)
+ public RequestInformation ToHeadRequestInformation(Action> requestConfiguration = default)
{
#endif
var requestInfo = new RequestInformation(Method.HEAD, UrlTemplate, PathParameters);
@@ -224,11 +226,11 @@ public RequestInformation ToHeadRequestInformation(ActionConfiguration for the request such as headers, query parameters, and middleware options.
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
#nullable enable
- public RequestInformation ToPatchRequestInformation(OpenApiKiotaClientExample.GeneratedCode.Models.ToManyTodoItemInRequest body, Action>? requestConfiguration = default)
+ public RequestInformation ToPatchRequestInformation(global::OpenApiKiotaClientExample.GeneratedCode.Models.ToManyTodoItemInRequest body, Action>? requestConfiguration = default)
{
#nullable restore
#else
- public RequestInformation ToPatchRequestInformation(OpenApiKiotaClientExample.GeneratedCode.Models.ToManyTodoItemInRequest body, Action> requestConfiguration = default)
+ public RequestInformation ToPatchRequestInformation(global::OpenApiKiotaClientExample.GeneratedCode.Models.ToManyTodoItemInRequest body, Action> requestConfiguration = default)
{
#endif
_ = body ?? throw new ArgumentNullException(nameof(body));
@@ -246,11 +248,11 @@ public RequestInformation ToPatchRequestInformation(OpenApiKiotaClientExample.Ge
/// Configuration for the request such as headers, query parameters, and middleware options.
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
#nullable enable
- public RequestInformation ToPostRequestInformation(OpenApiKiotaClientExample.GeneratedCode.Models.ToManyTodoItemInRequest body, Action>? requestConfiguration = default)
+ public RequestInformation ToPostRequestInformation(global::OpenApiKiotaClientExample.GeneratedCode.Models.ToManyTodoItemInRequest body, Action>? requestConfiguration = default)
{
#nullable restore
#else
- public RequestInformation ToPostRequestInformation(OpenApiKiotaClientExample.GeneratedCode.Models.ToManyTodoItemInRequest body, Action> requestConfiguration = default)
+ public RequestInformation ToPostRequestInformation(global::OpenApiKiotaClientExample.GeneratedCode.Models.ToManyTodoItemInRequest body, Action> requestConfiguration = default)
{
#endif
_ = body ?? throw new ArgumentNullException(nameof(body));
@@ -263,16 +265,17 @@ public RequestInformation ToPostRequestInformation(OpenApiKiotaClientExample.Gen
///
/// Returns a request builder with the provided arbitrary URL. Using this method means any other path or query parameters are ignored.
///
- /// A
+ /// A
/// The raw URL to use for the request builder.
- public OpenApiKiotaClientExample.GeneratedCode.Api.People.Item.Relationships.AssignedTodoItems.AssignedTodoItemsRequestBuilder WithUrl(string rawUrl)
+ public global::OpenApiKiotaClientExample.GeneratedCode.Api.People.Item.Relationships.AssignedTodoItems.AssignedTodoItemsRequestBuilder WithUrl(string rawUrl)
{
- return new OpenApiKiotaClientExample.GeneratedCode.Api.People.Item.Relationships.AssignedTodoItems.AssignedTodoItemsRequestBuilder(rawUrl, RequestAdapter);
+ return new global::OpenApiKiotaClientExample.GeneratedCode.Api.People.Item.Relationships.AssignedTodoItems.AssignedTodoItemsRequestBuilder(rawUrl, RequestAdapter);
}
///
/// Retrieves the related todoItem identities of an individual person's assignedTodoItems relationship.
///
- public class AssignedTodoItemsRequestBuilderGetQueryParameters
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.18.0")]
+ public partial class AssignedTodoItemsRequestBuilderGetQueryParameters
{
/// For syntax, see the documentation for the [`filter`](https://www.jsonapi.net/usage/reading/filtering.html)/[`sort`](https://www.jsonapi.net/usage/reading/sorting.html)/[`page`](https://www.jsonapi.net/usage/reading/pagination.html)/[`fields`](https://www.jsonapi.net/usage/reading/sparse-fieldset-selection.html) query string parameters.
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
@@ -288,7 +291,8 @@ public class AssignedTodoItemsRequestBuilderGetQueryParameters
///
/// Compare the returned ETag HTTP header with an earlier one to determine if the response has changed since it was fetched.
///
- public class AssignedTodoItemsRequestBuilderHeadQueryParameters
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.18.0")]
+ public partial class AssignedTodoItemsRequestBuilderHeadQueryParameters
{
/// For syntax, see the documentation for the [`filter`](https://www.jsonapi.net/usage/reading/filtering.html)/[`sort`](https://www.jsonapi.net/usage/reading/sorting.html)/[`page`](https://www.jsonapi.net/usage/reading/pagination.html)/[`fields`](https://www.jsonapi.net/usage/reading/sparse-fieldset-selection.html) query string parameters.
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
@@ -303,3 +307,4 @@ public class AssignedTodoItemsRequestBuilderHeadQueryParameters
}
}
}
+#pragma warning restore CS0618
diff --git a/src/Examples/OpenApiKiotaClientExample/GeneratedCode/Api/People/Item/Relationships/OwnedTodoItems/OwnedTodoItemsRequestBuilder.cs b/src/Examples/OpenApiKiotaClientExample/GeneratedCode/Api/People/Item/Relationships/OwnedTodoItems/OwnedTodoItemsRequestBuilder.cs
index 5476a77592..32f527db65 100644
--- a/src/Examples/OpenApiKiotaClientExample/GeneratedCode/Api/People/Item/Relationships/OwnedTodoItems/OwnedTodoItemsRequestBuilder.cs
+++ b/src/Examples/OpenApiKiotaClientExample/GeneratedCode/Api/People/Item/Relationships/OwnedTodoItems/OwnedTodoItemsRequestBuilder.cs
@@ -1,10 +1,11 @@
//
+#pragma warning disable CS0618
+using Microsoft.Kiota.Abstractions.Extensions;
using Microsoft.Kiota.Abstractions.Serialization;
using Microsoft.Kiota.Abstractions;
using OpenApiKiotaClientExample.GeneratedCode.Models;
using System.Collections.Generic;
using System.IO;
-using System.Linq;
using System.Threading.Tasks;
using System.Threading;
using System;
@@ -13,10 +14,11 @@ namespace OpenApiKiotaClientExample.GeneratedCode.Api.People.Item.Relationships.
///
/// Builds and executes requests for operations under \api\people\{id}\relationships\ownedTodoItems
///
- public class OwnedTodoItemsRequestBuilder : BaseRequestBuilder
+ [global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.18.0")]
+ public partial class OwnedTodoItemsRequestBuilder : BaseRequestBuilder
{
///
- /// Instantiates a new and sets the default values.
+ /// Instantiates a new and sets the default values.
///
/// Path parameters for the request
/// The request adapter to use to execute the requests.
@@ -24,7 +26,7 @@ public OwnedTodoItemsRequestBuilder(Dictionary pathParameters, I
{
}
///
- /// Instantiates a new and sets the default values.
+ /// Instantiates a new and sets the default values.
///
/// The raw URL to use for the request builder.
/// The request adapter to use to execute the requests.
@@ -37,52 +39,52 @@ public OwnedTodoItemsRequestBuilder(string rawUrl, IRequestAdapter requestAdapte
/// The request body
/// Cancellation token to use when cancelling requests
/// Configuration for the request such as headers, query parameters, and middleware options.
- /// When receiving a 400 status code
- /// When receiving a 404 status code
- /// When receiving a 409 status code
+ /// When receiving a 400 status code
+ /// When receiving a 404 status code
+ /// When receiving a 409 status code
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
#nullable enable
- public async Task DeleteAsync(OpenApiKiotaClientExample.GeneratedCode.Models.ToManyTodoItemInRequest body, Action>? requestConfiguration = default, CancellationToken cancellationToken = default)
+ public async Task DeleteAsync(global::OpenApiKiotaClientExample.GeneratedCode.Models.ToManyTodoItemInRequest body, Action>? requestConfiguration = default, CancellationToken cancellationToken = default)
{
#nullable restore
#else
- public async Task DeleteAsync(OpenApiKiotaClientExample.GeneratedCode.Models.ToManyTodoItemInRequest body, Action> requestConfiguration = default, CancellationToken cancellationToken = default)
+ public async Task DeleteAsync(global::OpenApiKiotaClientExample.GeneratedCode.Models.ToManyTodoItemInRequest body, Action