如何使用Automapper与ASP.NET 2.2的核心API

问题描述 投票:-1回答:2

这是我的错误:

System.InvalidOperationException:无法解析服务类型“myBackEnd.Entities.Striper”,而试图激活“myBackEnd.Controllers.StripeController”。在Microsoft.Extensions.DependencyInjection.ActivatorUtilities.GetService(的IServiceProvider属,种类类型,类型requiredBy,布尔isDefaultParameterRequired)

我正在使用Automapper首次。我也是新NET。我使用的是HTTPPOST从格式前端获取数据

    amount :  string;
    currency :  string;
    description :  string;
    token :  string;
    name: string;
    address_city: string;
    address_line1: string;
    address_line2: string;
    address_state: string;
    address_zip: string;
    address_country: string;

我有stripe.cs和stripeDto.cs文件:

public class Striper
{
    public object Amount { get; set; }
    public string Currency { get; set; }
    public object Description { get; set; }
    public string Token { get; set; }
    public string Name { get; set; }
    public string Address_line1 { get; set; }
    public string Address_line2 { get; set; }
    public string Address_state { get; set; }
    public string Address_zip { get; set; }
    public string Address_country { get; set; }
}

stripeDto:

public class StripeDto
{
    public object Amount { get; set; }
    public string Currency { get; set; }
    public object Description { get; set; }
    public string Token { get; set; }
    public string Name { get; set; }
    public string Address_line1 { get; set; }
    public string Address_line2 { get; set; }
    public string Address_state { get; set; }
    public string Address_zip { get; set; }
    public string Address_country { get; set; }
}

这是映射配置文件:

public class MappingProfile : Profile
{
    public MappingProfile()
    {
        CreateMap<Striper, StripeDto>();
        CreateMap<StripeDto, Striper>();
    }
}

最后,这是控制器:

private readonly AppDbContext _context;
private IMapper _mapper;

public StripeController(AppDbContext context, IMapper mapper)
{
     _context = context;
     _mapper = mapper;
}

public async Task<IActionResult> PostCreditCardData([FromBody] StripeDto stripeDto)
{
        Console.WriteLine("got this from the front end", stripeDto);
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }

          _context.StripeDto.Add(stripeDto);
         // Instantiate source object stripe
         await _context.SaveChangesAsync();

        _striper = _mapper.Map<Striper>(stripeDto);
        return Ok(_striper);


 }

我得到这个错误在Visual Studio“无法为类型解析服务‘myBackEnd.Entities.Striper’”

这里是startup.cs代码:

services.AddAutoMapper();
c# asp.net-core automapper
2个回答
1
投票

AutoMapper类你Startup配置应该如下:

public void ConfigureServices(IServiceCollection services)
{

    // Auto Mapper Configurations
    var mappingConfig = new MapperConfiguration(mc =>
    {
        mc.AddProfile(new MappingProfile());
    });

    IMapper mapper = mappingConfig.CreateMapper();
    services.AddSingleton(mapper);

    //........
}

1
投票

首先,您必须安装Automapper依赖注入包:

安装,包装AutoMapper.Extensions.Microsoft.DependencyInjection

呼叫services.AddAutoMapper()在ConfigureServices方法启动类。

更多关于这个在:https://dotnetcoretutorials.com/2017/09/23/using-automapper-asp-net-core/

© www.soinside.com 2019 - 2024. All rights reserved.