C# - 简单的 MongoDB 投影,自动映射返回“不支持表达式”

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

我正在尝试使用投影执行 mongodb 查询,并且我想使用 automapper 来映射模型和 DTO。

我使用 mongodbdriver 2.23

public class MachineOperationModel
{
    public ObjectId Id { get; set; }
    public EMachineStatus MachineStatus { get; set; }
    public EDevStatus DevStatus { get; set; }
    public TimeSpan StartTime { get; set; }
    public TimeSpan EndTime { get; set; }
}
public class MachineOperationDto
{
    public ObjectId Id { get; set; }
    public TimeSpan StartTime { get; set; }
    public TimeSpan EndTime { get; set; }
}
public async Task<IEnumerable<MachineOperationDto>?> Teste()
{
    var proj = Builders<MachineOperation>.Projection.Expression(m => _mapper.Map<MachineOperationDto>(m));

    var teste2 = await _collection
        .Find(Builders<MachineOperation>.Filter.Empty)
        .Project(proj)
        .ToListAsync();
}

当我尝试运行投影时,收到以下错误:

不支持表达式:value(AutoMapper.Mapper).Map(m)。

这两个类都已使用 AutoMapper 正确映射了

private void MachineOperationMap()
{
    CreateMap<MachineOperation, MachineOperationDto>()
        .ReverseMap();
}

我读了很多 stackoverflow 问题,但没有答案解决我的问题

c# .net mongodb mongodb-.net-driver map-projections
1个回答
0
投票

投影将在 mongo 中进行,自动映射器在 mongo 引擎中不可用。你可以使用下面的代码:

Builders<MachineOperation>.Projection.As<MachineOperationDto>()
© www.soinside.com 2019 - 2024. All rights reserved.