Automapper可查询扩展未出现

问题描述 投票:0回答:1

我正在使用以下内容:

  • EntityFrameworkCore 3.1.2
  • 。Net标准库2.1
  • Automapper 9.0.0
  • Automapper.Extension.Microsoft.DependencyInjection 7.0.0

我对AutoMapper的DI看起来像这样:

services.AddAutoMapper(Assembly.GetExecutingAssembly());

我有一个默认实现的IMapFrom:

using AutoMapper;

namespace Application.Common.Mappings
{
    public interface IMapFrom<T>
    {
        void Mapping(Profile profile) => profile.CreateMap(typeof(T), GetType());
    }
}

我有一个DTO类别,如下:

    public class ServiceRegistrationDto : IMapFrom<ServiceRegistration>
    {
        public string ServiceName { get; set; }

        public string MessageType { get; set; }

        public string ServiceURL { get; set; }

        public void Mapping(Profile profile)
        {
            profile.CreateMap<ServiceRegistration, ServiceRegistrationDto>();
        }
    }

在处理程序中,我正在执行以下操作:

public async Task<ServiceRegistrationViewModel> Handle(GetServiceRegistrationListQuery request, CancellationToken cancellationToken)
{
    var serviceRegistrations = await _context.ServiceRegistrations
        .Where(s => s.MessageType.Equals(request.MessageType, StringComparison.InvariantCultureIgnoreCase))
        .ProjectTo<ServiceRegistrationDto>(_mapper.ConfigurationProvider)
        .ToListAsync(cancellationToken);

    return null;
}

问题是“ ProjectTo”不是IQueryable的定义。我的印象是Automapper具有Queryable Extensions。我是否缺少NuGet软件包?我正在按照Northwind Traders的示例进行操作,但无法弄清自己有什么不同。

我可以使用IMapper进入“ ProjectTo”:

var x = _mapper.ProjectTo<ServiceRegistrationDto>(serviceRegistrations);

但是我希望像您应该的那样,将其作为IQueryable的一部分。

iqueryable automapper-9
1个回答
0
投票

我从代码中退后一步,意识到我错过了

using AutoMapper.QueryableExtensions;

DOH !!!

© www.soinside.com 2019 - 2024. All rights reserved.