我使用自动映射程序将实体映射到数据。
在appservice方法中,我需要从DB获取所有值并将其推送到list
下面是我的方法
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":{} },"context":{},"moveNextAction":{ "method":{ "name":"MoveNext","declaringType":"System.Runtime.CompilerServices.AsyncTaskMethodBuilder
1+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=neutral,PublicKeyToken=null],System.Private.CoreLib,Version=4.0.0.0,Culture=neutral,PublicKeyToken=7cec85d7bea7798e],TooSeeWeb.Infrastructure.AppServices.Experiences.ExperienceAppService+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","memberType":8,"metadataToken":100682290,“模块”:{ "mdStreamVersion":131072,"fullyQualifiedName":Version=4.0.0.0"moduleVersionId":"9aeda1ea-7722-4ca6-a7ca-c000af27dec0","metadataToken":1,
一个тв更多的代码,最后,我从方法中获得值。我的问题在哪里?
发布于 2019-05-28 02:15:00
我的问题不在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);
}
https://stackoverflow.com/questions/56330692
复制相似问题