[英]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.AsyncTaskMethodBuilder1+AsyncStateMachineBox
1 [[System.Collections.Generic.List1[[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 + AsyncStateMachineBox1[[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.