我正在尝试使用投影执行 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 问题,但没有答案解决我的问题
投影将在 mongo 中进行,自动映射器在 mongo 引擎中不可用。你可以使用下面的代码:
Builders<MachineOperation>.Projection.As<MachineOperationDto>()