Мне нужна проекция из базы данных в модель объекта. Перед тем как получить данные в базе данных и сопоставить Entity с единицей слова и reposy:Проецирование с Automapper
public async Task<IEnumerable<Entity>> GetProjectsSponsorByYear(Guid idUser)
{
logger.Trace("Called GetProjectsSponsorByYear method in ProjectBusiness");
var Entitys = await this.unitOfWork.Repository<Entity>().Queryable().Where(p => p.SponsorId == idUser && p.Draft == true).ToListAsync();
return listProjectDataBaseAsModel;
, после этого использования automapper для создания карты между Сущностью и моделью:
this.CreateMap<Entity, Model>()
.ForMember(dest => dest.ID, opt => opt.MapFrom(src => src.ID))
.ForMember(dest => dest.Title, opt => opt.MapFrom(src => src.Title))
public async Task<IEnumerable<Model>> GetProjectHistoricList()
{
logger.Trace("Called GetProjectHistoricList method in ProjectService");
var allProjects = await this.projectBusiness.GetAll();
var allProjectsGrid = this.entityMapper.Map<IEnumerable<Entity>, IEnumerable<Model>>(allProjects);
return allProjectsGrid;
}
Но теперь мне нужно сделал проекция из базы данных в модель объект, проблема при использовании createMap, для конфигурации automapper, я имею свойство с помощью метода
.ForMember(dest => dest.ImpactSupervisorDescription, opt => opt.MapFrom(src => src.ImpactSupervisor.GetDescription()))
, когда сделал проекцию между хранилищем и модель с методом ProjectTo get Exection от Linq. Я знаю, что это выделение для Linq создает запрос и не реализует этот метод в ней.
Необходимо знать, есть ли способ достичь этого, до или после проекции.
Спасибо за anwer :), Если бы я хотел сделать проекцию в метод getAll(), например, это путь: "Репозиторий() .Queryable(). ProjectTo () .ToListAsync() ";, я могу использовать метод ProjectToListAsync ??? –
Да, вы можете! Он выполняет ProjectTo и ToList, но также добавляет, что декомпилятор делегата находится посередине: https://lostechies.com/jimmybogard/2015/07/08/entity-framework-extensions-for-automapper/ –