Automapper: сопоставление свойств вне исходного объекта - PullRequest
0 голосов
/ 10 мая 2019

У меня есть устаревшее приложение ASP.NET для веб-форм, которое использует ASP.NET GridView.

Есть класс [User], который представляет сущность из модели EF, а затем есть [UserDto].Все свойства в UserDto отображаются на класс User, кроме одного - RowCount.Это на самом деле не свойство, относящееся к самому пользователю, но в устаревшей реализации мы имеем общее количество строк, привязанное к каждому объекту пользователя в списке пользователей, чтобы показать правильный номер страницы в Gridview.

Итак, воткак выглядит мое сопоставление:

config.CreateMap<User, UserDto>()
    .ForMember(dest => dest.Id, opt => opt.MapFrom(u => u.UserId))
    .ForMember(dest => dest.Username, opt => opt.MapFrom(u => u.UserName))
    .ForMember(dest => dest.Usercode, opt => opt.MapFrom(u => u.UserCode))
    .ForMember(dest => dest.FirstName, opt => opt.MapFrom(u => u.FirstName))
    .ForMember(dest => dest.LastName, opt => opt.MapFrom(u => u.LastName))
    .ForMember(dest => dest.Branch, opt => opt.MapFrom(u => u.Branch))
    .ForMember(dest => dest.Groups, opt => opt.MapFrom(u => u.UserGroups))
    .ForMember(dest => dest.AssignedUsers, opt => opt.MapFrom(u => u.User12.Select(s => s.FirstName + " " + s.LastName)));

Затем я получаю пользователей и сопоставляю их с DTO следующим образом:

var users = (from u in context.Users.Include("Branch")
                    where (u.FkBranchId == branchId || branchId == -1)
                    select u).ToList();
        // get the total row count to support paging
        var rowCount = users.Count;
        var orderedList = CustomSort.GetSortedList(users, sortInfo.SortColumn, sortInfo.SortDirection).Skip(pageInfo.Skip).Take(pageInfo.PageSize).ToList();
        return mapper.Map<List<EFModel.ClientData.User>, List<UserDto>>(orderedList);

Здесь я выкидываю ошибку, очевидно, потому что RowCountсобственность в моем DTO не отображается.Обратите внимание, что я хочу сопоставить его со свойством вне объекта пользователя, то есть счетчиком списка.

Как мне это сделать?

...