iqueryable - Automapper Queryable Extensions 没有出现
问题描述
我正在使用以下内容:
- 实体框架核心 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 的一部分来做,就像你应该做的那样。
解决方案
我从代码中退了一步,意识到我错过了
using AutoMapper.QueryableExtensions;
噢噢噢!!!
推荐阅读
- python - AttributeError:“DataFrame”对象没有属性“patient_col”
- oracle - 在自适应游标共享中如何计算下限选择性和上限选择性?
- android - 如何防止反向横向但在Android中允许横向?
- swift - SwiftUI - 以图形方式减少 VStack
- c# - 来自实体框架的 LINQ OrderBy 首先只有正值
- linux - docker.service 的作业失败,因为控制进程以错误代码退出。在安装 docker ubuntu 19.10 期间
- firebase - Firestore 批量操作权限
- android - Android Studio 在调试器中找不到局部变量
- css - 滑块中的网格自动流列
- google-cloud-platform - 谷歌云:来自 1e100.net 的 GCE 传入流量显示在 iptables 中