i have a class
public class Order
{
public string Name{ get; set; }
public Nullable<int> StatusId { get; set; }
public virtual Status Status { get; set; }
}
public class Status
{
public int Id { get; set; }
public string Name { get; set; }
}
public class OrderDto
{
public Nullable<int> StatusId { get; set; }
public string Name{ get; set; }
}
public class StatusDto
{
public int Id { get; set; }
public string Name { get; set; }
}
autoMapper:
cfg.CreateMap<Order, OrderDto>().ReverseMap();
cfg.CreateMap<Status, StatusDto>().ReverseMap();
In model classes I was able to do this:
name = order.status.Name
How can i achieve that when using autoMapper
CodePudding user response:
Your OrderDto
does not have Status
, so you can not get Status
name from mapped object.
So either you will create new property in OrderDto
class StatusName
, and map it to status.name
of your model, or add to OrderDto
object StatusDto
field, like this:
public class OrderDto
{
public string Name{ get; set; }
public Nullable<int> StatusId { get; set; }
public StatusDto Status { get; set; }
}
Then AutoMapper will map models's Status
field to OrderDto
's Status
field.
CodePudding user response:
You can do that, but you need to define it in mapper profile.
CreateMap<Order, OrderDTO>()
.ForMember(dst => dst.name, src => src.MapFrom(x => x.status.Name));