Difference between EntityDataSource and EntityHeaderDataSource
EntityDataSource
An EntityDataSource is typically used to pull all data fields from a given entity structure. This is most commonly used with regards to reporting or accessing data.
EntityHeaderDataSource
An EntityHeaderDataSource is more often used to just retrieve a summary or just the header fields of an entity. This is used more often in situation where not all information is necessary which permits better performance.