After reading this SO question, I noticed that the link in the question made a reference to Microsoft.Xrm.Client.CodeGeneration.CodeCustomization,Microsoft.Xrm.Client.
Here is the best site I could currently find on what it does:
- CrmSvcUtil & OrganizationServiceContext enhancements such as lazy loading
- Simplified Connection Management with Connection Dialog UI
- Client Side caching extensions
- Utility Extension functions for common tasks to speed up client development
- Organization Service Message utility functions to make it easy to call common messages such as BulkDelete, Add Member to Team etc.
- Objects to support the Microsoft.Xrm.Portal extensions
The only real downside I can see to inheriting from CrmEntity is that it requires the Microsoft.Xrm.Client dll to either be Gac'd on the server, or IL Mergered into the Entities dll.
Besides that one downside, here are the features I see it adding:
System.Data.Services.Common.DataServiceKeyAttribute
System.Data.Services.IgnorePropertiesAttribute
(I'm assuming this one sends less data over the wire?)