未应用AutoMapper投影

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

我正在尝试建立一个抽象我的实体层的框架,但是要实现此目的,我需要自动映射器项目才能工作,因此我可以查询我的DTO而不是查询实体

[TestMethod]
public async Task Verify_Mapping_Projection_Behavior()
{
    var projectionModifier = "Alabastar";
    var services = this.GetRegisteredRestEzServiceCollection();
    var serviceProvider = services.BuildServiceProvider();
    var context = (AstootContext)serviceProvider.GetService<DbContext>();

    var config = new MapperConfiguration(cfg =>
    {
        cfg.CreateMap<User, UserDTO>().ForMember(x => x.FirstName, 
            o => o.MapFrom((entity, dto) => entity.FirstName + projectionModifier));
    });

    var mapper = config.CreateMapper();

    // Hack: we'll verify exeuction happens in sql
    // using the behavioral differene between in memory and sql (case insensitivity)
    var sqlOnlyModifier = projectionModifier.ToUpper();
    var userDTO = mapper.ProjectTo<UserDTO>(context.Users)
        .Where(x => x.FirstName.Contains(sqlOnlyModifier))
        .FirstOrDefault();

    Assert.IsNotNull(userDTO);
}

我的测试失败了,所以我决定直接实现该投影。实现时,我可以看到projectionModifier没有添加到firstName属性中。

如何获得项目以映射修改器,以便可以将DTO用作Sql Queryables?

c# .net-core automapper projection
1个回答
0
投票
MapFrom的3参数重载需要分配。这可以通过使用2参数重载来解决。
© www.soinside.com 2019 - 2024. All rights reserved.