【问题标题】:Automapper Queryable Extensions not appearingAutomapper 可查询扩展未出现
【发布时间】:2020-06-21 20:02:42
【问题描述】:

我正在使用以下内容:

  • EntityFrameworkCore 3.1.2
  • .Net 标准库 2.1
  • 自动映射器 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】:

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

    using AutoMapper.QueryableExtensions;
    

    DOH!!!

    【讨论】:

      猜你喜欢
      • 2018-02-16
      • 2021-05-31
      • 1970-01-01
      • 2020-09-27
      • 2013-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多