[Announcement] ODataLib 6.7.0 Release

We are happy to announce that the ODL 6.7.0 is released and available on NuGet. Detailed release notes are listed below:

New Features


  1. EdmLib supports a list of additional core vocabulary terms
        -  IsLanguageDependent
        -  RequiresType
        -  ResourcePath
        -  DereferenceableIDs
        -  ConventionalIDs
        -  Immutable
        -  Computed
        -  IsURL
        -  AcceptableMediaTypes
        -  MediaType
        -  IsMediaType
  2. EdmLib supports adding metadata annotations to elements in Edm model.
  3. ODataLib supports computing Uri with KeyAsSegment convention for deserializing.
  4. ODataUriParser supports Enum value as an entity key
  5. ODataLib supports overriding default Uri parsing behavior, including:
        -  Resolving property name
        -  Resolving type name
        -  Resolving navigation source name
        -  Resolving operation import name
        -  Resolving bound operation name
        -  Resolving function parameters
        -  Resolving entity set key
        -  Resolving binary operator node elements
        We have also provided built-in implementations to enable following scenarios:
        1) Case insensitive for built in identifiers, including:
            •  In path segment
                $batch, $metadata, $count, $ref, $value
            •  In query options
                $id, $select, $expand(including nested query options), $levels, $filter, $orderby, $skip, $top, $count, $search, max, asc, desc, any, all, contains, startswith, endswith, length, indexof, substring, tolower, toupper, trim, concat, year, month, day, hour,  minute, second, fractionalseconds, totalseconds, totaloffsetminutes, mindatetime maxdatetime, now, and, or, eq, ne, lt, le, gt, ge, has, add, sub, mul, div, mod, not, round, floor, ceiling, isof, cast, geo.distance, geo.length, geo.intersects
            •  $it, true, false, null, are not supported and should be case sensitive
            •  AND, OR, NOT for $search are not supported and should be case sensitive
        2) Case insensitive for user metadata, including :
            •  EntitySet/Singleton Name
            •  EntitySet key predicate name
            •  Property Name
            •  Type Name
            •  FunctionImport name/parameter name
            •  ActionImport name
            •  Bound function name/parameter name
            •  Bound action name
        3) Unqualified function call, including:
            •  Bound function call without namespace prefix
            •  Bound action call without namespace prefix
        4) Omitting Enum type name prefix for Enum value, including:
            •  Omitting Enum type prefix in binary operator
            •  Omitting Enum type prefix in entity set key value
            •  Omitting Enum type prefix in function parameter

Bug fixes

  1. Fixes a bug that DataServiceCollection<T> constructor runs into stack overflow when parameter T derives from a generic type of T.
  2. Fixes a bug that Edm validator doesn't correctly report error when the Edm model contains dupped key properties.

Call to Action

You and your team are highly welcomed to try out this new version if you are interested in the new features and fixes above. For any feature request, issue or idea please feel free to reach out to us at odatafeedback@microsoft.com.

Comments (5)

  1. Onur Gumus says:

    I was trying to send a mail to you but there is a problem with odatafeedback@microsoft.com mail address

    I am getting the following error:


    Your message wasn't delivered due to a permission or security issue. It may have been rejected by a moderator, the address may only accept email from certain senders, or another restriction may be preventing delivery. For more tips to resolve this issue see DSN code 5.7.1 in Exchange Online. If the problem continues contact your help desk

    Anyway my problem is:

    I wrote a custom client and I would like to use relative urls in my batch requests due to my odata server behind a reverse proxy. Having hardcoded server urls is not so nice with reverse proxy.

    However, the batchwriter does want an absolute base URI. And this is I believe an unnecessary restriction because

    the following request just works fine with asp.net web api 2.2.

    Can you change batchwriter so that it accepts relative urls ?

  2. Stephen says:

    I look around and notice that major users of OData are not updating to the new version of OData (v4).

    Are there any major users of OData that are moving to the new version?  (NOTE: I am not asking about new users that started on the the v4 version.)  Have companies upgraded?

    I don't see it happening.  

    Also major tool makers don't seem to be upgrading .  For example LinqPad has not (and does not seem to have it in the road map).

    I am only one user.  So my opinion may not be worth much, but I think your breaking changes are too harsh for the upgraders.  

    Especially the loss of the DateTime type.  Without it you are putting "nice to have" features (like case insensitivity) over features that make or break use of the whole product.

    I know it is not in the protocol for v4.  But it is needed (I will not hash the reasons here).

    My company is not upgrading because of this issue.  I submit that others are in the same boat as me.  Please reconsider your decision to not support DateTime.

  3. meh says:

    What happened to the Silverlight 5 Support? All the base libs are portable to SL5 but the client is not!?

    The support was present until version 6.4, then dropped without a comment?

    I spent a lot of work on upgrading an existing client from odata V3 to V4 so please can i get at least a statement how MS is planning to handle this?

    BTW: Why is the client (6.7) even installing on a silverlight project? Is there something wrong with the nuget package?

  4. Onur says:

    @meh: I am actually against supporting Silverlight because once you decided to support Silverlight you end up with mscorlib 2.0.5 as a dependent DLL. And that version doesn't play nicely with a lot of tools and libraries.

    Of course if you have an investment in Silverlight it is bad. Nevertheless I strongly believe all future libraries should be purified from Silverlight support. Of course this is my 2 cents.

  5. Will Smith says:

    I am using the latest Uri Parse in this library.  Try to get it handle $search.  ParseSearch() does return an expression, however, the Accept<> method does not allow a visitor and throws a "Not Implemented" exception.  Using this extension method against the express and and vistor sample:

    public static string ToLogString(this QueryNode node)


               return node.Accept(new QueryNodeToStringVisitor());



Skip to main content