Training
Learning path
Implement finance and operations apps - Training
Plan and design your project methodology to successfully implement finance and operations apps with FastTrack services, data management and more.
This browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
OData lib is loosely used to refer to the following group of OData libraries available on the Nuget gallery:
You can install or update any of the NuGet packages for OData lib using the Package Manager Console.
IsType
using IsOf
to align with the OData standard in #3025$filter
in #3018ODataUtf8JsonWriter
the default JSON writer implementation to enhance serialization performance. Benchmarks and feedback from some OData users have shown that ODataUtf8JsonWriter
offers better performance and memory efficiency compared to the current default JsonWriter.ODataLibraryCompatibility
enum into a flags enum, where each bit represents a different compatibility setting that can enable some legacy serialization behavior.ODataError
, ODataErrorDetail
and ODataInnerError
classes.
ODataErrorDetail
’s ErrorCode
property updated to CodeODataInnerError
changed to ODataInnerError(new Dictionary<string, ODataValue>())
ODataResource.Properties
property type was changed to IEnumerable<ODataPropertyInfo>
to facilitate metadata reading or writing, even in scenarios where the property lacks a value.Scale
attribute in XML CSDL, use variable
in lowercase instead of Variable
. An enum flag, UseLegacyVariableCasing
, was added to support the legacy behavior.UsesDefault
property to IEdmVocabularyAnnotation
to support creating vocabulary annotations without explicit values but with default values. These default values are not written to the CSDL but can be read.IBaseEntityType.Context
to DataServiceContext
to avoid naming conflicts that cause compilation or runtime errors when Context
is used as a property name in customer schemas.Starting version 8, OData lib will only target .NET 8 or later.
IJsonReaderAsync
interface has been merged into IJsonReader
interface.
IJsonReader
needs to implement methods previously defined in IJsonReaderAsync
interfaces.Value
property in IJsonReader
interface is replaced by GetValue
method.IJsonReaderFactoryAsync
interface has been dropped.IJsonStreamWriter
, IJsonWriterAsync
and IJsonStreamWriterAsync
interfaces have been merged into IJsonWriter
interface.
IJsonWriter
needs to implement methods previously defined in IJsonStreamWriter
, IJsonWriterAsync
and IJsonStreamWriterAsync
interfaces.IStreamBasedJsonWriterFactory
and IJsonWriterFactoryAsync
interfaces has been dropped.DefaultStreamBasedJsonWriterFactory
class has been renamed to ODataUtf8JsonWriterFactory
.CreateJsonWriter(TextReader, bool)
defined in IJsonWriterFactory
has changed to CreateJsonWriter(Stream, bool, Encoding)
. The method now accepts a Stream
rather than a TextReader
.List<ODataUrlValidationMessage> Messages
property defined in ODataUrlValidationContext
class has changed to IReadOnlyList<ODataUrlValidationMessage> Messages
.
AddMessage(ODataUrlValidationMessage)
overload introduced in ODataUrlValidationContext
.INavigationSourceSegment
interface introduced. The purpose of this new interface is to reduce casting when determining the navigation source associated with the segment. EntitySetSegment
, SingletonSegment
and NavigationPropertySegment
implement this new interface.JsonPCallback
property defined in ODataMessageWriterSettings
class marked as obsolete.StartPaddingFunctionScope
method defined in IJsonWriter
interface marked as obsolete.EndPaddingFunctionScope
method defined in IJsonWriter
interface marked as obsolete.WritePaddingFunctionName
method defined in IJsonWriter
interface marked as obsolete.StartPaddingFunctionScopeAsync
method defined in IJsonWriter
interface marked as obsolete.EndPaddingFunctionScopeAsync
method defined in IJsonWriter
interface marked as obsolete.WritePaddingFunctionNameAsync
method defined in IJsonWriter
interface marked as obsolete.ODataSimplifiedOptions
class was dropped. This class would be injected into the DI container and the settings used to control behaviour when parsing URLs, and when writing and reading payloads. In ODL 8, ODataMessageReaderSettings
, ODataMessageWriterSettings
, and ODataUriParserSettings
may variously be used to accomplish the same purpose.
EnableReadingKeyAsSegment
and EnableReadingODataAnnotationWithoutPrefix
properties moved to ODataMessageReaderSettings
class.EnableWritingKeyAsSegment
property moved to ODataMessageWriterSettings
class.SetOmitODataPrefix(bool)
, SetOmitODataPrefix(bool, ODataVersion)
, GetOmitODataPrefix()
, and GetOmitODataPrefix(ODataVersion)
methods moved to ODataMessageWriterSettings
class.EnableParsingKeyAsSegment
property moved to ODataUriParserSettings
class.ODataBinaryStreamValue
class is initialized using the ODataBinaryStreamValue(Stream)
constructor, the stream is left open by default upon the object being disposed. In ODL 8, the stream is closed by default the object objects is disposed. The ODataBinaryStreamValue(Stream, bool)
constructor overload may be used where leaving the stream open is intended.Func<string, bool> ShouldIncludeAnnotation
property introduced in ODataMessageWriterSettings
. This property makes it possible for developers to force a custom instance annotation to be written even if it's not include in the optional @odata.include-annotations
preference token in Prefer
request header.IContainerBuilder
interface used when registering OData services was dropped. Use Microsoft.Extensions.DependencyInjection
library instead.
AddDefaultODataServices(IServiceCollection, ODataVersion, Action<ODataMessageReaderSettings>, Action<ODataMessageWriterSettings>, Action<ODataUriParserSettings>)
extension method introduced for the purpose of registering OData services.IContainerProvider
interface replaced by IServiceCollectionProvider
interface. It's a provider for the IServiceProvider
IoC container.ODataBatchOperationRequestMessage
now implements IServiceCollectionProvider
instead of IContainerProvider
.ODataBatchOperationResponseMessage
now implements IServiceCollectionProvider
instead of IContainerProvider
.HttpWebRequestMessage
class has been dropped - effectively dropping support for HttpWebRequest
. Use HttpClientRequestMessage
class instead.IHttpClientHandlerProvider
interface used to provide HttpClientHandler
for use with DataServiceContext
has been dropped.HttpClientHandlerProvider
property defined in DataServiceClientRequestMessageArgs
class and used for providing HttpClientHandler
substituted with HttpClientFactory
property that accomplishes the same purpose.HttpClientHandlerProvider
property defined in DataServiceContext
class and used for providing HttpClientHandler
substituted with HttpClientFactory
property that accomplishes the same purpose.Credentials
property dropped from DataServiceClientRequestMessage
abstract class. The recommended way to configure credentials is through HttpClientHandler
that can be provided using IHttpClientFactory
.Credentials
property dropped from HttpClientRequestMessage
class. The recommended way to configure credentials is through HttpClientHandler
that can be provided using IHttpClientFactory
.Credentials
property dropped from DataServiceContext
class. The recommended way to configure credentials is through HttpClientHandler
that can be provided using IHttpClientFactory
.ReadWriteTimeout
property dropped from DataServiceClientRequestMessage
abstract class. This property would be used with HttpWebRequestMessage
. Timeout
property may be used instead.ReadWriteTimeout
property dropped from HttpClientRequestMessage
class. This property would be used with HttpWebRequestMessage
. Timeout
property may be used instead.DataServiceClientRequestMessageArgs
class, the DataServiceClientRequestMessageArgs(string, Uri, bool, bool, IDictionary<string, string>)
constructor has changed to DataServiceClientRequestMessageArgs(string, Uri, bool, IDictionary<string, string>)
. The boolean useDefaultCredentials
parameter is no longer supported.DataServiceClientRequestMessageArgs
class, the DataServiceClientRequestMessageArgs(string, Uri, bool, bool, IDictionary<string, string>, IHttpClientHandlerProvider)
constructor has changed to DataServiceClientRequestMessageArgs(string, Uri, bool, IDictionary<string, string>, IHttpClientFactory)
. The boolean useDefaultCredentials
parameter is no longer supported.DataServiceClientRequestMessageArgs
class, the UseDefaultCredentials
property dropped from DataServiceClientRequestMessageArgs
class. The recommended way to configure credentials is through HttpClientHandler
that can be provided using IHttpClientFactory
.HttpRequestTransportMode
enum property was dropped from DataServiceContext
. This property was used to switch between HttpClient
and HttpWebRequest
that was dropped.KeyComparisonGeneratesFilterQuery
flag defined in DataServiceContext
class marked as deprecated. Flag will be removed in ODL 9.
keyComparisonGeneratesFilterQuery
flag set to true such that a Where
expression with only the key property in the predicate is translated into a $filter
query rather a resouce URL for requesting a single entity.IncludeTotalCount()
method was dropped from DataServiceQuery<TElement>
class. Use IncludeCount()
method.IncludeTotalCount(bool)
method was dropped from DataServiceQuery<TElement>
class: Use IncludeCount(bool)
the method.TotalCount
property was dropped from QueryOperationResponse
class. Use Count
property.TotalCount
property was dropped from QueryOperationResponse<T>
class. Use Count
property.CreateODataDeltaReader(IEdmEntitySetBase, IEdmEntityType)
method dropped from ODataMessageReader
class. Use CreateODataDeltaResourceSetReader(IEdmEntitySetBase, IEdmStructuredType)
method.CreateODataDeltaReaderAsync(IEdmEntitySetBase, IEdmEntityType)
method dropped from ODataMessageReader
class. Use CreateODataDeltaResourceSetReader(IEdmEntitySetBase, IEdmStructuredType)
method.CreateODataDeltaWriter(IEdmEntitySetBase, IEdmEntityType)
method dropped from ODataMessageReader
class. Use CreateODataDeltaResourceSetWriter(IEdmEntitySetBase, IEdmStructuredType)
method.CreateODataDeltaWriterAsync(IEdmEntitySetBase, IEdmEntityType)
method dropped from ODataMessageReader
class. Use CreateODataDeltaResourceSetWriterAsync(IEdmEntitySetBase, IEdmStructuredType)
method.Expressions
property dropped from AggregateToken
class. Use AggregateExpressions
property.Expressions
property dropped from AggregateTransformationNode
class. Use AggregateExpressions
property.EntityTypeInvalidKeyKeyDefinedInBaseClass
validation rule dropped from ValidationRules
class. Use EntityTypeInvalidKeyKeyDefinedInAncestor
validation rule.EntityTypeKeyMissingOnEntityType
validation rule dropped from ValidationRules
class. Use NavigationSourceTypeHasNoKeys
validation rule.IEdmEntityType EntityType
property introduced in IEdmNavigationSource
interface.
IEdmNavigationSource
needs to implement the EntityType
property.EntityType(IEdmNavigationSource)
static method has been marked as obsolete and will be removed in ODL 9.Training
Learning path
Implement finance and operations apps - Training
Plan and design your project methodology to successfully implement finance and operations apps with FastTrack services, data management and more.