I recently upgraded a WCF Data Service project to WCF Data Services 5.0 for OData v3. This upgrade has support for accessing your EF Code First entities via a Wcf data service.
There’s a good blog post on MSDN by Glenn Gailey with details on how to upgrade.
However, I started my upgraded service and got this rather unhelpful error message:
The server encountered an error processing the request. Please see the service help page for constructing valid requests to the service. The exception message is ‘On data context type ‘<type>’, there is a top IQueryable property ‘<propertyName>’ whose element type is not an entity type. Make sure that the IQueryable property is of entity type or specify the IgnoreProperties attribute on the data context type to ignore this property.’. See server logs for more details.
The cause of the problem was failing to remove all references to System.Data.Services and System.Data.Services.Client from all my projects.
Following the guidance I’d removed all references to System.Data.Services.* from the main WCF data service project; but I had missed the indirect reference in my “Entity Model” Project. Some entities were marked with the [DataContractKey()] attribute; thus leading to the stray reference.
Removing all reference to System.Data.Service.* and replacing with Microsoft.Data.Services.Client.dll fixed the error.
(assemblies can be found in %programfiles(x86)%\Microsoft WCF Data Services\5.0\bin)