繁体   English   中英

使用 AutoMapper 映射 DTO 后,Id 字段变为 0

[英]After mapping DTO using AutoMapper, the Id field becomes 0

请在下面找到代码:

public class CustomerDto
{  
    public int Id { get; set; }

    [Required]
    [StringLength(255)]
    public String Name { get; set; }
}

public class Customer
{  
    public int Id { get; set; }

    [Required]
    [StringLength(255)]
    public String Name { get; set; }
}

// ...

var customers = _context.Customers.ToList();
var cusDtos= Mapper.Map<List<Customer>,List<CustomerDto>>(customers);
return cusDtos;

cusDtos所有对象都具有除Id之外的所有属性的值,所有对象的Id为 0。 客户包含Id值,但映射后Id变为 0。任何人都可以帮我解决这个问题吗?

提前致谢。

您是否尝试过更改此代码

var cusDtos= Mapper.Map<List<Customer>,List<CustomerDto>>(customers);

用这个改变

var cusDtos= Mapper.Map<List<CustomerDto>>(customers);

并找到 automapper 配置文件。 并改变这个

 CreateMap<Customer, CustomerDto>()
         .ForMember(m => m.Id, opt => opt.Ignore());

对此

 CreateMap<Customer, CustomerDto>();

AutoMapper 配置:

CreateMap<Customer, CustomerDto>();

您的代码:

var customers = _context.Customers.ToList();
var cusDtos = customers.Select(x => AutoMapper.Mapper.Map<CustomerDto>(x)).ToList();
return cusDtos;

暂无
暂无

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

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