While @Aaronaught’s answer was correct at the time of writing, as often the world has changed and AutoMapper with it. In the mean time, QueryableExtensions
were added to the code base which added support for projections that get translated into expressions and, finally, SQL.
The core extension method is ProjectTo
1. This is what your code could look like:
using AutoMapper.QueryableExtensions;
public IQueryable<DO_RoleInfo> SelectAll()
{
Mapper.CreateMap<DB_RoleInfo, DO_RoleInfo>();
return _ctx.DB_RoleInfo.ProjectTo<DO_RoleInfo>();
}
and it would behave like the manual mapping. (The CreateMap
statement is here for demonstration purposes. Normally, you’d define mappings once at application startup).
Thus, only the columns that are required for the mapping are queried and the result is an IQueryable
that still has the original query provider (linq-to-sql, linq-to-entities, whatever). So it is still composable and this will translate into a WHERE
clause in SQL:
SelectAll().Where(x => x.Id == Key).SingleOrDefault();
1 Project().To<T>()
prior to v. 4.1.0