繁体   English   中英

映射后返回内容错误(Automapper .NET Core)

[英]Returning content after Mapping is wrong (Automapper .NET Core)

我使用自动映射器从实体映射到dto。

在appservice方法中,我需要从数据库获取所有值并将其推送到列表

这是我的方法

 public class ExperienceAppService : IExperience
{
    private readonly ApplicationDbContext _context;
    private readonly IMapper _mapper;

    public ExperienceAppService(ApplicationDbContext context,
        IMapper mapper)
    {
        _context = context;
        _mapper = mapper;
    }

    public async Task<List<ExperienceListDto>> GetExperiences()
    {
        var experiences = await _context.Experiences
            .ProjectTo<ExperienceListDto>(_mapper.ConfigurationProvider)
            .ToListAsync();
        return experiences;
    }

}

这是映射配置文件

 public class MappingsProfile : Profile
{
    public MappingsProfile()
    {
        CreateMap<UserDto, User>();

        #region Experiences

        CreateMap<ExperienceDto, Experience>();
        CreateMap<Experience, ExperienceDto>().ForMember(x => x.Name,
                opt => opt.MapFrom(n => n.Name))
            .ForMember(x => x.City, opt => opt.MapFrom(c => c.City))
            .ForMember(x => x.Price, opt => opt.MapFrom(c => c.Price))
            .ForMember(x => x.Rating, opt => opt.MapFrom(c => c.Rating));

        #endregion
    }
}

这是我在Startup.cs中注册的方式

services.AddMvc().AddJsonOptions(options =>
            {
                options.SerializerSettings.ContractResolver =
                    new CamelCasePropertyNamesContractResolver();
                options.SerializerSettings.ReferenceLoopHandling =
                    ReferenceLoopHandling.Ignore;
            })
            .SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
        //Mapper.Initialize(cfg => cfg.AddProfile<MappingsProfile>());
        services.AddAutoMapper();

我的问题是,作为回应,我收到了这样的文字

{“ stateMachine”:{“ <> 1__state”:0,“ <> t__builder”:{},“ <> 4__this”:{}},“上下文”:{},“ moveNextAction”:{“方法”:{ “名称”:“ MoveNext”,“ 1+AsyncStateMachineBox ”:“ System.Runtime.CompilerServices.AsyncTaskMethodBuilder 1+AsyncStateMachineBox 1 [[System.Collections.Generic.List 1[[TooSeeWeb.Core.DtoModels.Experiences.ExperienceListDto, TooSeeWeb.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[TooSeeWeb.Infrastructure.AppServices.Experiences.ExperienceAppService+<GetExperiences>d__3, TooSeeWeb.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e", "reflectedType": "System.Runtime.CompilerServices.AsyncTaskMethodBuilder 1 + AsyncStateMachineBox 1[[System.Collections.Generic.List 1 [[TooSeeWeb.Core.DtoModels.Experiences.ExperienceListDto,TooSeeWeb.Core,Version = 1.0.0.0,Culture = neut ral,PublicKeyToken = null]],System.Private.CoreLib,版本= 4.0.0.0,文化=中性,PublicKeyToken = 7cec85d7bea7798e],[TooSeeWeb.Infrastructure.AppServices.Experiences.ExperienceAppService + d__3,TooSeeWeb.Infrastructure,版本= 1.0。 0.0,Culture = neutral,PublicKeyToken = null]],System.Private.CoreLib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e“,” memberType“:8,” metadataToken“:100682290,” module“:{ “ mdStreamVersion”:131072,“ fullyQualifiedName”:“ /usr/local/share/dotnet/shared/Microsoft.NETCore.App/2.2.5/System.Private.CoreLib.dll","moduleVersionId":"9aeda1ea-7722- 4ca6-a7ca-c000af27dec0“,” metadataToken“:1,

更多的代码,最后,我从方法中获取值。 我的问题在哪里?

我的问题不在mapper中。 在Controller中,我正在返回这样的列表

    [HttpGet]
    public IActionResult GetExperiences()
    {
        var experiences = _experienceAppService.GetExperiences();
        return Ok(experiences);
    }

代替这个

    [HttpGet]
    public IActionResult GetExperiences()
    {
        var experiences = _experienceAppService.GetExperiences();
        return Ok(experiences.Result);
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM