From d73d3af1fd3b691f1a3b57c249a98b34d5d1b6b2 Mon Sep 17 00:00:00 2001 From: Elizabeth Okerio Date: Wed, 10 May 2023 09:29:00 +0300 Subject: [PATCH] add datamodificationexception class --- .../DataModificationExceptionType.cs | 118 +++++++++ .../Deltas/Delta.cs | 3 + .../Deltas/DeltaLinkBaseOfT.cs | 3 + .../Deltas/IDeltaSetItem.cs | 5 + .../IODataInstanceAnnotationContainer.cs | 61 +++++ .../Microsoft.AspNetCore.OData.xml | 223 ++++++++++++++++++ .../ODataInstanceAnnotationContainer.cs | 168 +++++++++++++ .../Properties/SRResources.Designer.cs | 18 ++ .../Properties/SRResources.resx | 6 + .../PublicAPI.Unshipped.txt | 46 ++++ 10 files changed, 651 insertions(+) create mode 100644 src/Microsoft.AspNetCore.OData/DataModificationExceptionType.cs create mode 100644 src/Microsoft.AspNetCore.OData/IODataInstanceAnnotationContainer.cs create mode 100644 src/Microsoft.AspNetCore.OData/ODataInstanceAnnotationContainer.cs diff --git a/src/Microsoft.AspNetCore.OData/DataModificationExceptionType.cs b/src/Microsoft.AspNetCore.OData/DataModificationExceptionType.cs new file mode 100644 index 000000000..7ee1bab8d --- /dev/null +++ b/src/Microsoft.AspNetCore.OData/DataModificationExceptionType.cs @@ -0,0 +1,118 @@ +//----------------------------------------------------------------------------- +// +// Copyright (c) .NET Foundation and Contributors. All rights reserved. +// See License.txt in the project root for license information. +// +//------------------------------------------------------------------------------ + +using System; + +namespace Org.OData.Core.V1 +{ + /// + /// Represents a message type. + /// + public class MessageType + { + /// + /// Code of message. + /// + public string Code { get; set; } + + /// + /// Actual message. + /// + public string Message { get; set; } + + /// + /// Severity of message. + /// + public string Severity { get; set; } + + /// + /// Target of message. + /// + public string Target { get; set; } + + /// + /// Details of message. + /// + public string Details { get; set; } + } + + /// + /// Represents an exception type. + /// + public abstract class ExceptionType + { + /// + /// Represents a message type. + /// + public MessageType MessageType { get; set; } + } + + /// + /// Represents the type of exception thrown during a data modification operation. + /// + public class DataModificationExceptionType : ExceptionType + { + /// + /// Initializes a new instance of the class. + /// + public DataModificationExceptionType(DataModificationOperationKind failedOperation) + { + this.FailedOperation = failedOperation; + } + + /// + /// Represents the kind of data modification operation. + /// + public DataModificationOperationKind FailedOperation { get; } + + /// + /// Represents the response code. + /// + public Int16 ResponseCode { get; set; } + } + + /// + /// Enumerates the kind of data modification operations. + /// + public enum DataModificationOperationKind + { + /// + /// Represents an insert operation. + /// + Insert, + + /// + /// Represents an update operation. + /// + Update, + + /// + /// Represents an insert or update operation if item already exists. + /// + Upsert, + + /// + /// Represents a delete data modification operation. + /// + Delete, + + /// + /// Represents an action or function invocation. + /// + Invoke, + + /// + /// Represents adding a link between entities. + /// + Link, + + /// + /// Represents removing a link between entities. + /// + Unlink + } +} diff --git a/src/Microsoft.AspNetCore.OData/Deltas/Delta.cs b/src/Microsoft.AspNetCore.OData/Deltas/Delta.cs index 9eda97a6a..70367cb57 100644 --- a/src/Microsoft.AspNetCore.OData/Deltas/Delta.cs +++ b/src/Microsoft.AspNetCore.OData/Deltas/Delta.cs @@ -21,6 +21,9 @@ public abstract class Delta : DynamicObject, IDelta /// public abstract DeltaItemKind Kind { get; } + /// + public IODataInstanceAnnotationContainer TransientInstanceAnnotationContainer { get => throw new NotImplementedException(); set => throw new NotImplementedException(); } + /// /// Clears the Delta and resets the underlying Entity. /// diff --git a/src/Microsoft.AspNetCore.OData/Deltas/DeltaLinkBaseOfT.cs b/src/Microsoft.AspNetCore.OData/Deltas/DeltaLinkBaseOfT.cs index 6abf6eb04..bc0858b94 100644 --- a/src/Microsoft.AspNetCore.OData/Deltas/DeltaLinkBaseOfT.cs +++ b/src/Microsoft.AspNetCore.OData/Deltas/DeltaLinkBaseOfT.cs @@ -68,5 +68,8 @@ protected DeltaLinkBase(Type structuralType) /// The name of the relationship property on the parent object. /// public string Relationship { get; set; } + + /// + public IODataInstanceAnnotationContainer TransientInstanceAnnotationContainer { get => throw new NotImplementedException(); set => throw new NotImplementedException(); } } } diff --git a/src/Microsoft.AspNetCore.OData/Deltas/IDeltaSetItem.cs b/src/Microsoft.AspNetCore.OData/Deltas/IDeltaSetItem.cs index 7b8d0efd6..ce239e8fe 100644 --- a/src/Microsoft.AspNetCore.OData/Deltas/IDeltaSetItem.cs +++ b/src/Microsoft.AspNetCore.OData/Deltas/IDeltaSetItem.cs @@ -16,5 +16,10 @@ public interface IDeltaSetItem /// Gets the delta item kind. /// DeltaItemKind Kind { get; } + + /// + /// Gets or sets the annotation container to hold transient instance annotations. + /// + IODataInstanceAnnotationContainer TransientInstanceAnnotationContainer { get; set; } } } diff --git a/src/Microsoft.AspNetCore.OData/IODataInstanceAnnotationContainer.cs b/src/Microsoft.AspNetCore.OData/IODataInstanceAnnotationContainer.cs new file mode 100644 index 000000000..3cca11d9a --- /dev/null +++ b/src/Microsoft.AspNetCore.OData/IODataInstanceAnnotationContainer.cs @@ -0,0 +1,61 @@ +//----------------------------------------------------------------------------- +// +// Copyright (c) .NET Foundation and Contributors. All rights reserved. +// See License.txt in the project root for license information. +// +//------------------------------------------------------------------------------ + +using System.Collections.Generic; + +namespace Microsoft.AspNetCore.OData +{ + /// + /// Identifies a container for holding instance annotations. A default implementation is provided. + /// Customers can have their own implementation. + /// + public interface IODataInstanceAnnotationContainer + { + /// + /// Method to Add an Instance Annotation to the CLR type + /// + /// Name of Annotation + /// Value of Annotation + void AddResourceAnnotation(string annotationName, object value); + + /// + /// Method to Add an Instance Annotation to a property + /// + /// Name of the property + /// Name of Annotation + /// Value of Annotation + void AddPropertyAnnotation(string propertyName, string annotationName, object value); + + /// + /// Get an Instance Annotation from CLR Type + /// + /// Name of Annotation + /// Get Annotation value for the given annotation + object GetResourceAnnotation(string annotationName); + + /// + /// Get an Instance Annotation from the Property + /// + /// Name of the Property + /// Name of the Annotation + /// Get Annotation value for the given annotation and property + object GetPropertyAnnotation(string propertyName, string annotationName); + + /// + /// Get All Annotations from CLR Type + /// + /// Dictionary of string(annotation name) and object value(annotation value) + IDictionary GetResourceAnnotations(); + + /// + /// Get all Annotations for a Property + /// + /// Name of Property + /// Dictionary of string(annotation name) and object value(annotation value) + IDictionary GetPropertyAnnotations(string propertyName); + } +} diff --git a/src/Microsoft.AspNetCore.OData/Microsoft.AspNetCore.OData.xml b/src/Microsoft.AspNetCore.OData/Microsoft.AspNetCore.OData.xml index 9317c3ab6..0d13ca85d 100644 --- a/src/Microsoft.AspNetCore.OData/Microsoft.AspNetCore.OData.xml +++ b/src/Microsoft.AspNetCore.OData/Microsoft.AspNetCore.OData.xml @@ -1348,6 +1348,9 @@ DeltaKind for the objects part of the DeltaResourceSet Payload. + + + Clears the Delta and resets the underlying Entity. @@ -1578,6 +1581,9 @@ The name of the relationship property on the parent object. + + + allows and tracks changes to delta added link. @@ -1863,6 +1869,11 @@ Gets the delta item kind. + + + Gets or sets the annotation container to hold transient instance annotations. + + The typed delta. @@ -6236,6 +6247,55 @@ Gets the inner nested resource infos. + + + Identifies a container for holding instance annotations. A default implementation is provided. + Customers can have their own implementation. + + + + + Method to Add an Instance Annotation to the CLR type + + Name of Annotation + Value of Annotation + + + + Method to Add an Instance Annotation to a property + + Name of the property + Name of Annotation + Value of Annotation + + + + Get an Instance Annotation from CLR Type + + Name of Annotation + Get Annotation value for the given annotation + + + + Get an Instance Annotation from the Property + + Name of the Property + Name of the Annotation + Get Annotation value for the given annotation and property + + + + Get All Annotations from CLR Type + + Dictionary of string(annotation name) and object value(annotation value) + + + + Get all Annotations for a Property + + Name of Property + Dictionary of string(annotation name) and object value(annotation value) + Provides extension methods for to add OData routes. @@ -6273,6 +6333,59 @@ The given route pattern. The . + + + Default implementation for IODataInstanceAnnotationContainer + + + + + Initializes a new instance of the class. + + + + + Method to Add an Instance Annotation to the CLR type + + Name of Annotation + Value of Annotation + + + + Method to Add an Instance Annotation to a property + + Name of the property + Name of Annotation + Value of Annotation + + + + Get an Instance Annotation from CLR Type + + Name of Annotation + Get Annotation value for the given annotation + + + + Get an Instance Annotation from the Property + + Name of the Property + Name of the Annotation + Get Annotation value for the given annotation and property + + + + Get All Annotations from CLR Type + + Dictionary of string(annotation name) and object value(annotation value) + + + + Get all Annotation for a Property + + Name of Property + Dictionary of string(annotation name) and object value(annotation value) + Sets up default OData options for . @@ -7048,6 +7161,16 @@ Looks up a localized string similar to The input key count '{0}' does not match the number '{1}' of the key of entity type '{2}'.. + + + Looks up a localized string similar to Instance Annotation name cannot have a '@' as the first character and cannot have a '.' as first or last character.. + + + + + Looks up a localized string similar to Instance Annotation should have a '.' in it and should not be the first or last character, usually in a format Namespace.TermName. + + Looks up a localized string similar to The attribute routing template contains invalid segment '{0}'. The template string does not start with '{{' or ends with '}}'.. @@ -15211,5 +15334,105 @@ + + + Represents a message type. + + + + + Code of message. + + + + + Actual message. + + + + + Severity of message. + + + + + Target of message. + + + + + Details of message. + + + + + Represents an exception type. + + + + + Represents a message type. + + + + + Represents the type of exception thrown during a data modification operation. + + + + + Initializes a new instance of the class. + + + + + Represents the kind of data modification operation. + + + + + Represents the response code. + + + + + Enumerates the kind of data modification operations. + + + + + Represents an insert operation. + + + + + Represents an update operation. + + + + + Represents an insert or update operation if item already exists. + + + + + Represents a delete data modification operation. + + + + + Represents an action or function invocation. + + + + + Represents adding a link between entities. + + + + + Represents removing a link between entities. + + diff --git a/src/Microsoft.AspNetCore.OData/ODataInstanceAnnotationContainer.cs b/src/Microsoft.AspNetCore.OData/ODataInstanceAnnotationContainer.cs new file mode 100644 index 000000000..84e6b3554 --- /dev/null +++ b/src/Microsoft.AspNetCore.OData/ODataInstanceAnnotationContainer.cs @@ -0,0 +1,168 @@ +//----------------------------------------------------------------------------- +// +// Copyright (c) .NET Foundation and Contributors. All rights reserved. +// See License.txt in the project root for license information. +// +//------------------------------------------------------------------------------ + +using System.Collections.Generic; +using System; + +namespace Microsoft.AspNetCore.OData +{ + /// + ///Default implementation for IODataInstanceAnnotationContainer + /// + public class ODataInstanceAnnotationContainer + { + private IDictionary> instanceAnnotations; + + + /// + /// Initializes a new instance of the class. + /// + public ODataInstanceAnnotationContainer() + { + instanceAnnotations = new Dictionary>(); + } + + /// + /// Method to Add an Instance Annotation to the CLR type + /// + /// Name of Annotation + /// Value of Annotation + public void AddResourceAnnotation(string annotationName, object value) + { + SetInstanceAnnotation(string.Empty, annotationName, value); + } + + /// + /// Method to Add an Instance Annotation to a property + /// + /// Name of the property + /// Name of Annotation + /// Value of Annotation + public void AddPropertyAnnotation(string propertyName, string annotationName, object value) + { + if (string.IsNullOrEmpty(propertyName)) + { + throw Error.ArgumentNull("propertyName"); + } + + SetInstanceAnnotation(propertyName, annotationName, value); + } + + /// + /// Get an Instance Annotation from CLR Type + /// + /// Name of Annotation + /// Get Annotation value for the given annotation + public object GetResourceAnnotation(string annotationName) + { + return GetInstanceAnnotation(string.Empty, annotationName); + } + + /// + /// Get an Instance Annotation from the Property + /// + /// Name of the Property + /// Name of the Annotation + /// Get Annotation value for the given annotation and property + public object GetPropertyAnnotation(string propertyName, string annotationName) + { + if (string.IsNullOrEmpty(propertyName)) + { + throw Error.ArgumentNull("propertyName"); + } + + return GetInstanceAnnotation(propertyName, annotationName); + } + + /// + /// Get All Annotations from CLR Type + /// + /// Dictionary of string(annotation name) and object value(annotation value) + public IDictionary GetResourceAnnotations() + { + return GetAllInstanceAnnotations(string.Empty); + } + + /// + /// Get all Annotation for a Property + /// + /// Name of Property + /// Dictionary of string(annotation name) and object value(annotation value) + public IDictionary GetPropertyAnnotations(string propertyName) + { + if (string.IsNullOrEmpty(propertyName)) + { + throw Error.ArgumentNull("propertyName"); + } + + return GetAllInstanceAnnotations(propertyName); + } + + private void SetInstanceAnnotation(string propertyName, string annotationName, object value) + { + ValidateInstanceAnnotation(annotationName); + + IDictionary annotationDictionary; + if (!instanceAnnotations.TryGetValue(propertyName, out annotationDictionary)) + { + annotationDictionary = new Dictionary(); + instanceAnnotations.Add(propertyName, annotationDictionary); + } + + annotationDictionary[annotationName] = value; + } + + private object GetInstanceAnnotation(string propertyName, string annotationName) + { + if (string.IsNullOrEmpty(annotationName)) + { + throw Error.ArgumentNull("annotationName"); + } + + IDictionary annotationDictionary; + if (instanceAnnotations.TryGetValue(propertyName, out annotationDictionary)) + { + object annotationValue; + if (annotationDictionary.TryGetValue(annotationName, out annotationValue)) + { + return annotationValue; + } + } + + return null; + } + + private IDictionary GetAllInstanceAnnotations(string propertyName) + { + IDictionary annotationDictionary; + if (instanceAnnotations.TryGetValue(propertyName, out annotationDictionary)) + { + return annotationDictionary; + } + + return null; + } + + private static void ValidateInstanceAnnotation(string annotationName) + { + if (string.IsNullOrEmpty(annotationName)) + { + throw Error.ArgumentNull("annotationName"); + } + + if (annotationName[0] == '@' || annotationName[0] == '.' || annotationName[annotationName.Length - 1] == '.') + { + throw new ArgumentException(SRResources.InstanceAnnotationNotContain, annotationName); + } + + if (!annotationName.Contains(".")) + { + throw new ArgumentException(SRResources.InstanceAnnotationShouldContain, annotationName); + } + } + } +} diff --git a/src/Microsoft.AspNetCore.OData/Properties/SRResources.Designer.cs b/src/Microsoft.AspNetCore.OData/Properties/SRResources.Designer.cs index 104f76a59..5d99aad86 100644 --- a/src/Microsoft.AspNetCore.OData/Properties/SRResources.Designer.cs +++ b/src/Microsoft.AspNetCore.OData/Properties/SRResources.Designer.cs @@ -798,6 +798,24 @@ internal static string InputKeyNotMatchEntityTypeKey { } } + /// + /// Looks up a localized string similar to Instance Annotation name cannot have a '@' as the first character and cannot have a '.' as first or last character.. + /// + internal static string InstanceAnnotationNotContain { + get { + return ResourceManager.GetString("InstanceAnnotationNotContain", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Instance Annotation should have a '.' in it and should not be the first or last character, usually in a format Namespace.TermName. + /// + internal static string InstanceAnnotationShouldContain { + get { + return ResourceManager.GetString("InstanceAnnotationShouldContain", resourceCulture); + } + } + /// /// Looks up a localized string similar to The attribute routing template contains invalid segment '{0}'. The template string does not start with '{{' or ends with '}}'.. /// diff --git a/src/Microsoft.AspNetCore.OData/Properties/SRResources.resx b/src/Microsoft.AspNetCore.OData/Properties/SRResources.resx index 04406453f..7ddee563b 100644 --- a/src/Microsoft.AspNetCore.OData/Properties/SRResources.resx +++ b/src/Microsoft.AspNetCore.OData/Properties/SRResources.resx @@ -739,4 +739,10 @@ Unable to identify a unique property named '{0}'. {0} = Property Name + + Instance Annotation name cannot have a '@' as the first character and cannot have a '.' as first or last character. + + + Instance Annotation should have a '.' in it and should not be the first or last character, usually in a format Namespace.TermName + \ No newline at end of file diff --git a/src/Microsoft.AspNetCore.OData/PublicAPI.Unshipped.txt b/src/Microsoft.AspNetCore.OData/PublicAPI.Unshipped.txt index 1819f7059..2e003b1a0 100644 --- a/src/Microsoft.AspNetCore.OData/PublicAPI.Unshipped.txt +++ b/src/Microsoft.AspNetCore.OData/PublicAPI.Unshipped.txt @@ -219,6 +219,8 @@ Microsoft.AspNetCore.OData.Deltas.IDeltaDeletedResource.Reason.set -> void Microsoft.AspNetCore.OData.Deltas.IDeltaSet Microsoft.AspNetCore.OData.Deltas.IDeltaSetItem Microsoft.AspNetCore.OData.Deltas.IDeltaSetItem.Kind.get -> Microsoft.AspNetCore.OData.Deltas.DeltaItemKind +Microsoft.AspNetCore.OData.Deltas.IDeltaSetItem.TransientInstanceAnnotationContainer.get -> Microsoft.AspNetCore.OData.IODataInstanceAnnotationContainer +Microsoft.AspNetCore.OData.Deltas.IDeltaSetItem.TransientInstanceAnnotationContainer.set -> void Microsoft.AspNetCore.OData.Deltas.ITypedDelta Microsoft.AspNetCore.OData.Deltas.ITypedDelta.ExpectedClrType.get -> System.Type Microsoft.AspNetCore.OData.Deltas.ITypedDelta.StructuredType.get -> System.Type @@ -656,7 +658,22 @@ Microsoft.AspNetCore.OData.Formatter.Wrapper.ODataResourceWrapper.IsDeletedResou Microsoft.AspNetCore.OData.Formatter.Wrapper.ODataResourceWrapper.NestedResourceInfos.get -> System.Collections.Generic.IList Microsoft.AspNetCore.OData.Formatter.Wrapper.ODataResourceWrapper.ODataResourceWrapper(Microsoft.OData.ODataResourceBase resource) -> void Microsoft.AspNetCore.OData.Formatter.Wrapper.ODataResourceWrapper.Resource.get -> Microsoft.OData.ODataResourceBase +Microsoft.AspNetCore.OData.IODataInstanceAnnotationContainer +Microsoft.AspNetCore.OData.IODataInstanceAnnotationContainer.AddPropertyAnnotation(string propertyName, string annotationName, object value) -> void +Microsoft.AspNetCore.OData.IODataInstanceAnnotationContainer.AddResourceAnnotation(string annotationName, object value) -> void +Microsoft.AspNetCore.OData.IODataInstanceAnnotationContainer.GetPropertyAnnotation(string propertyName, string annotationName) -> object +Microsoft.AspNetCore.OData.IODataInstanceAnnotationContainer.GetPropertyAnnotations(string propertyName) -> System.Collections.Generic.IDictionary +Microsoft.AspNetCore.OData.IODataInstanceAnnotationContainer.GetResourceAnnotation(string annotationName) -> object +Microsoft.AspNetCore.OData.IODataInstanceAnnotationContainer.GetResourceAnnotations() -> System.Collections.Generic.IDictionary Microsoft.AspNetCore.OData.ODataApplicationBuilderExtensions +Microsoft.AspNetCore.OData.ODataInstanceAnnotationContainer +Microsoft.AspNetCore.OData.ODataInstanceAnnotationContainer.AddPropertyAnnotation(string propertyName, string annotationName, object value) -> void +Microsoft.AspNetCore.OData.ODataInstanceAnnotationContainer.AddResourceAnnotation(string annotationName, object value) -> void +Microsoft.AspNetCore.OData.ODataInstanceAnnotationContainer.GetPropertyAnnotation(string propertyName, string annotationName) -> object +Microsoft.AspNetCore.OData.ODataInstanceAnnotationContainer.GetPropertyAnnotations(string propertyName) -> System.Collections.Generic.IDictionary +Microsoft.AspNetCore.OData.ODataInstanceAnnotationContainer.GetResourceAnnotation(string annotationName) -> object +Microsoft.AspNetCore.OData.ODataInstanceAnnotationContainer.GetResourceAnnotations() -> System.Collections.Generic.IDictionary +Microsoft.AspNetCore.OData.ODataInstanceAnnotationContainer.ODataInstanceAnnotationContainer() -> void Microsoft.AspNetCore.OData.ODataJsonOptionsSetup Microsoft.AspNetCore.OData.ODataJsonOptionsSetup.Configure(Microsoft.AspNetCore.Mvc.JsonOptions options) -> void Microsoft.AspNetCore.OData.ODataJsonOptionsSetup.ODataJsonOptionsSetup() -> void @@ -1472,6 +1489,35 @@ Microsoft.AspNetCore.OData.Routing.Template.ValueSegmentTemplate Microsoft.AspNetCore.OData.Routing.Template.ValueSegmentTemplate.Segment.get -> Microsoft.OData.UriParser.ValueSegment Microsoft.AspNetCore.OData.Routing.Template.ValueSegmentTemplate.ValueSegmentTemplate(Microsoft.OData.Edm.IEdmType previousType) -> void Microsoft.AspNetCore.OData.Routing.Template.ValueSegmentTemplate.ValueSegmentTemplate(Microsoft.OData.UriParser.ValueSegment segment) -> void +Org.OData.Core.V1.DataModificationExceptionType +Org.OData.Core.V1.DataModificationExceptionType.DataModificationExceptionType(Org.OData.Core.V1.DataModificationOperationKind failedOperation) -> void +Org.OData.Core.V1.DataModificationExceptionType.FailedOperation.get -> Org.OData.Core.V1.DataModificationOperationKind +Org.OData.Core.V1.DataModificationExceptionType.ResponseCode.get -> short +Org.OData.Core.V1.DataModificationExceptionType.ResponseCode.set -> void +Org.OData.Core.V1.DataModificationOperationKind +Org.OData.Core.V1.DataModificationOperationKind.Delete = 3 -> Org.OData.Core.V1.DataModificationOperationKind +Org.OData.Core.V1.DataModificationOperationKind.Insert = 0 -> Org.OData.Core.V1.DataModificationOperationKind +Org.OData.Core.V1.DataModificationOperationKind.Invoke = 4 -> Org.OData.Core.V1.DataModificationOperationKind +Org.OData.Core.V1.DataModificationOperationKind.Link = 5 -> Org.OData.Core.V1.DataModificationOperationKind +Org.OData.Core.V1.DataModificationOperationKind.Unlink = 6 -> Org.OData.Core.V1.DataModificationOperationKind +Org.OData.Core.V1.DataModificationOperationKind.Update = 1 -> Org.OData.Core.V1.DataModificationOperationKind +Org.OData.Core.V1.DataModificationOperationKind.Upsert = 2 -> Org.OData.Core.V1.DataModificationOperationKind +Org.OData.Core.V1.ExceptionType +Org.OData.Core.V1.ExceptionType.ExceptionType() -> void +Org.OData.Core.V1.ExceptionType.MessageType.get -> Org.OData.Core.V1.MessageType +Org.OData.Core.V1.ExceptionType.MessageType.set -> void +Org.OData.Core.V1.MessageType +Org.OData.Core.V1.MessageType.Code.get -> string +Org.OData.Core.V1.MessageType.Code.set -> void +Org.OData.Core.V1.MessageType.Details.get -> string +Org.OData.Core.V1.MessageType.Details.set -> void +Org.OData.Core.V1.MessageType.Message.get -> string +Org.OData.Core.V1.MessageType.Message.set -> void +Org.OData.Core.V1.MessageType.MessageType() -> void +Org.OData.Core.V1.MessageType.Severity.get -> string +Org.OData.Core.V1.MessageType.Severity.set -> void +Org.OData.Core.V1.MessageType.Target.get -> string +Org.OData.Core.V1.MessageType.Target.set -> void override Microsoft.AspNetCore.OData.Abstracts.ETagActionFilterAttribute.OnActionExecuted(Microsoft.AspNetCore.Mvc.Filters.ActionExecutedContext actionExecutedContext) -> void override Microsoft.AspNetCore.OData.Abstracts.NonValidatingParameterBindingAttribute.BindingSource.get -> Microsoft.AspNetCore.Mvc.ModelBinding.BindingSource override Microsoft.AspNetCore.OData.Batch.ChangeSetRequestItem.SendRequestAsync(Microsoft.AspNetCore.Http.RequestDelegate handler) -> System.Threading.Tasks.Task