7 Appendix B: Product Behavior

The information in this specification is applicable to the following Microsoft products or supplemental software. References to product versions include updates to those products.

This document specifies version-specific details in the Microsoft .NET Framework. For information about which versions of .NET Framework are available in each released Windows product or as supplemental software, see [MS-NETOD] section 4.

  • Microsoft .NET Framework 3.5 Service Pack 1 (SP1)

  • Microsoft .NET Framework 4.0

  • Microsoft .NET Framework 4.5

  • Microsoft .NET Framework 4.6

  • Microsoft .NET Framework 4.7

  • Microsoft .NET Framework 4.8

Exceptions, if any, are noted in this section. If an update version, service pack or Knowledge Base (KB) number appears with a product name, the behavior changed in that update. The new behavior also applies to subsequent updates unless otherwise specified. If a product edition appears with the product version, behavior is different in that product edition.

Unless otherwise specified, any statement of optional behavior in this specification that is prescribed using the terms "SHOULD" or "SHOULD NOT" implies product behavior in accordance with the SHOULD or SHOULD NOT prescription. Unless otherwise specified, the term "MAY" implies that the product does not follow the prescription.

<1> Section 1.7: The following table describes, as specified in this document, which versions of the OData protocol are supported by which versions of .NET Framework.

OData version

.NET Framework 3.5 SP1

Data Services Update for .NET Framework 3.5 SP1, KB#976127

.NET Framework
4.0/4.5/4.6/4.7/4.8

WCF Data Services 5* for .NET Framework 4.0/4.5/4.6/4.7/4.8

OData 1.0

Yes

Yes

Yes

Yes

OData 2.0

Yes

Yes

Yes

OData 3.0

Yes

*WCF Data Services 5 includes WCF Data Services Server, WCF Data Services Client, and ODataLib.

<2> Section 2.2.3.4: The data service client library always appends parentheses after EntitySet names. The data service server library accepts EntitySet names appended with parentheses, but never generates such URIs in response payloads or HTTP response headers.

<3> Section 2.2.3.4: The data service client and server libraries generate key predicates of the form "<Entity Type property name> = <Entity Type property value>" in the case where multiple properties form the key. Otherwise, the canonical form for a single property EntityKey, as seen in section 2.2.3.4, is used.

<4> Section 2.2.3.5: The data service client library always appends parentheses after EntitySet names or NavigationProperty names identifying a collection of entities. The data service server library accepts EntitySet names and NavigationProperty names that identify a collection of entities appended with parentheses, but never generates such URIs in response payloads or HTTP response headers.

<5> Section 2.2.3.6: The data service client library always generates a single system query option of a particular type. For example, if a complex filter expression is defined, a single $filter system query option (section 2.2.3.6.1.4) will be present.

<6> Section 2.2.3.6.1: The data service client library and server libraries support all system query options except the $format option, as specified in Format System Query Option ($format) (section 2.2.3.6.1.5). No support is provided in .NET Framework 3.5 SP1 for $skiptoken, as specified in Skip Token System Query Option ($skiptoken) (section 2.2.3.6.1.9); $inlinecount, as specified in InlineCount System Query Option ($inlinecount) (section 2.2.3.6.1.10); or $select, as specified in Select System Query Option ($select) (section 2.2.3.6.1.11).

<7> Section 2.2.3.6.1.1: The data service server library supports all of the expressions.

<8> Section 2.2.3.6.1.1: The data service server library supports all of the expressions.

<9> Section 2.2.3.6.1.1.1: The data service server library supports all of the expressions.

<10> Section 2.2.3.6.1.1.1: The data service server library supports all of the expressions.

<11> Section 2.2.3.6.1.1.1: The data service server library supports all of the expressions.

<12> Section 2.2.3.6.1.1.1: The data service server library supports all of the expressions.

<13> Section 2.2.3.6.1.1.1: The data service server library supports all of the expressions.

<14> Section 2.2.3.6.1.1.1: The data service server library supports all of the expressions.

<15> Section 2.2.3.6.1.1.1: The data service server library supports all of the expressions.

<16> Section 2.2.3.6.1.1.1: The data service server library supports all of the expressions.

<17> Section 2.2.3.6.1.1.1: The data service server library supports all of the expressions.

<18> Section 2.2.3.6.1.1.1: The data service server library supports all of the expressions.

<19> Section 2.2.3.6.1.1.1: The data service server library supports all of the expressions.

<20> Section 2.2.3.6.1.1.1: The data service server library supports all of the expressions.

<21> Section 2.2.3.6.1.1.1: The data service server library supports all of the expressions.

<22> Section 2.2.3.6.1.1.1: The data service server library supports all of the expressions.

<23> Section 2.2.3.6.1.1.1: The data service server library supports all of the expressions.

<24> Section 2.2.3.6.1.1.1: The data service server library supports all of the expressions.

<25> Section 2.2.3.6.1.1.1: The data service server library supports all of the expressions.

<26> Section 2.2.3.6.1.1.1: The data service server library supports all of the expressions.

<27> Section 2.2.3.6.1.1.1: The data service server library supports all of the expressions.

<28> Section 2.2.3.6.1.1.1: The data service server library supports all of the expressions.

<29> Section 2.2.3.6.1.1.1: The data service server library supports all of the expressions.

<30> Section 2.2.3.6.1.1.1: The data service server library supports all of the expressions.

<31> Section 2.2.3.6.1.1.1: The data service server library supports all of the expressions.

<32> Section 2.2.3.6.1.1.1: The data service server library supports all of the expressions.

<33> Section 2.2.3.6.1.1.1: The data service server library supports all of the expressions.

<34> Section 2.2.3.6.1.1.1: The data service server library supports all of the expressions.

<35> Section 2.2.3.6.1.1.1: The data service server library supports all of the expressions.

<36> Section 2.2.3.6.1.1.1: The data service server library supports all of the expressions.

<37> Section 2.2.3.6.1.1.1: The data service server library supports all of the expressions.

<38> Section 2.2.3.6.1.1.1: The data service server library supports all of the expressions.

<39> Section 2.2.3.6.1.1.1: The data service server library supports all of the expressions.

<40> Section 2.2.3.6.1.1.1: The data service server library supports all of the expressions.

<41> Section 2.2.3.6.1.1.1: The data service server library supports all of the expressions.

<42> Section 2.2.3.6.1.1.1: The data service server library supports all of the expressions.

<43> Section 2.2.3.6.1.1.1: The data service server library supports all of the expressions.

<44> Section 2.2.3.6.1.1.1: The data service server library supports all of the expressions.

<45> Section 2.2.3.6.1.1.1: The data service server library supports all of the expressions.

<46> Section 2.2.3.6.1.1.1: The data service server library supports all of the expressions.

<47> Section 2.2.3.6.1.1.1: The data service server library supports all of the expressions.

<48> Section 2.2.3.6.1.1.1: The data service server library supports all of the allowable expressions.

<49> Section 2.2.3.6.1.1.2: The data service server library supports all of the expressions.

<50> Section 2.2.3.6.1.1.5: The data service library in the .NET Framework will not return null as a result of a logical operator if an operand is also null.

<51> Section 2.2.3.7.2: The data service server library includes the mimeType attribute only if the developer who authors the service explicitly defines a media type for the property. By default, the mimeType attribute is not included on the definition of a property.

<52> Section 2.2.5.4: In the data service server library the default behavior is that each EntityType does not define a concurrency token. Definition of a concurrency token requires an explicit step by the developer who authors the data service that uses the server library.

<53> Section 2.2.5.5: The data service client library includes the If-Match header only if the EntityType associated with the request defines a concurrency token.

<54> Section 2.2.5.5: The data service client library includes the If-Match header only if the EntityType associated with the request defines a concurrency token.

<55> Section 2.2.5.6: The data service client library includes the If-None-Match header only if the EntityType associated with the request defines a concurrency token.

<56> Section 2.2.5.6: The data service client library includes the If-None-Match header only if the EntityType associated with the request defines a concurrency token.

<57> Section 2.2.5.8: The data service client library and server library support verb tunneling.

<58> Section 2.2.6.2: The data service client library and server library use only the request and response messages that are defined in this document.

<59> Section 2.2.6.2.2: The data service libraries do not write the m:properties element if it is empty.

<60> Section 2.2.6.2.2: The data service client library and server library do not generate or parse self links.

<61> Section 2.2.6.3: The data service client library and server library in the .NET Framework support the Verbose JSON format in OData 1.0, OData 2.0, and OData 3.0.

<62> Section 2.2.6.3: The data service client library and server library in the .NET Framework support the preferred OData 3.0 JSON format only in OData 3.0.

<63> Section 2.2.6.3.3: The data service server library generates and parses the "__metadata" name/value pair.

<64> Section 2.2.6.4.1: The data service server library alters the media type associated with an EntityType property only if the developer who authors the service explicitly defines a media type for the property.

<65> Section 2.2.6.6: The data service client library and server library in the .NET Framework support the preferred OData 3.0 JSON format only in OData 3.0.

<66> Section 2.2.7.4.1: By default, the server library does not cause any additional side effects on the data model. Lower or higher layers can cause side effects.

<67> Section 2.2.7.6: The data service server library does implement Batch request

<68> Section 2.2.7.6: The data service client library does not support creating a Batch request that includes both a query operation and a change set.

<69> Section 3.2.5.1: The data service libraries do not implement any access control policies. Such policies can be applied by a higher or lower layer.

<70> Section 3.2.5.2: By default, the server library does not cause any additional side effects on the data model. Lower or higher layers can cause side effects.

<71> Section 3.2.5.3: The data service server library in the .NET Framework will return a 500 response code instead of a 4xx response code if an Insert request is received with an empty value for a data service resource and the type of that resource does not permit an empty value.

<72> Section 3.2.5.3.1: By default, the data service client library does not omit any constructs.

<73> Section 3.2.5.5: The server library returns a 500 response code rather than the required 4xx response code when an Update request is received that would set the value of a resource to empty when the type of that resource does not define an empty state.

<74> Section 3.2.8: The data service server library in the .NET Framework will return an empty collection of entities with a 200 response code instead of a 404 response code if the last URI path segment in the request URI is a NavigationProperty name that identifies a collection of entities.