This is my first post on the subject CRM 2015 oData Vs CRM 2016 Web API.
I will start with for me something that took me some time to understand and use properly when upgrading from CRM 2015 to CRM 2016 on the client side
With the Web API, now we have two different types of fields (properties), the primitive properties and the lookup properties (navigation properties).
OData supports a wide range of data types but Microsoft Dynamics CRM doesn’t use all of them. The following table describes how CRM Organization service types are mapped to OData primitive types.
In OData, navigation properties allow you to access data related to the current entity. When you retrieve an entity you can choose to expand navigation properties to include the related data. There are two types of navigation properties: single-valued and collection-valued.
The lookup properties as the name says, it represents a lookup (lookup, owner, partylist) in one entity to another, whereas primitive properties are the others (money, string, decimal, integer,status,…)
After a retrieve of an entity data, primitive properties can be used like (account.name), on the other hand, the navigation properties have to be used like
account["firstname.lastname@example.org"] = "/contacts(" + primaricontactGuid + ")";
For more information please follow the MSDN link:
Hope it helps.