为了账号安全,请及时绑定邮箱和手机立即绑定

Automapper 不适用于嵌套对象

Automapper 不适用于嵌套对象

C#
元芳怎么了 2021-10-24 16:35:16
我目前使用 .net core 2.1 并尝试对嵌套对象使用 automapper 将模型转换为 dto 并将 dto 转换为模型。当每个字段都被正确映射时,关系映射就会出现问题。楷模public class DropdownValue{    public int Id { get; set; }    public string Value { get; set; }    public int PropertyId { get; set; }    public Property Property { get; set; }}public class Property{    public int Id { get; set; }    public string Title { get; set; }    public ValueTypes ValueType { get; set; }    public InputTypes InputType { get; set; }    public List<DropdownValue> DropdownValues { get; set; }}托斯public class DropdownValueDto{    public int Id { get; set; }    public string Value { get; set; }    public PropertyDto Property { get; set; }}public class PropertyDto{    public int Id { get; set; }    public string Title { get; set; }    public InputTypes InputType { get; set; }    public ValueTypes ValueType { get; set; }}映射器public class MappingProfile : Profile{    public MappingProfile()     {        CreateMap<Property, PropertyDto>();        CreateMap<DropdownValue, DropdownValueDto>();    }}在处理程序中的使用_mapper.Map<List<Models.DropdownValue>, List<DropdownValueDto>>(dropdownValues)
查看完整描述

2 回答

?
12345678_0001

TA贡献1802条经验 获得超5个赞

//Models


public class DropdownValue

{

    public int Id { get; set; }

    public string Value { get; set; }

    public int PropertyId { get; set; }

    public Property Property { get; set; } = new Property();

}


public class Property

{

    public int Id { get; set; }

    public string Title { get; set; }

    public ValueTypes ValueType { get; set; } = new ValueTypes();

    public InputTypes InputType { get; set; } = new InputTypes();

    public List<DropdownValue> DropdownValues { get; set; } = new List<DropdownValue>();

}

//Dtos


public class DropdownValueDto

{

    public int Id { get; set; }

    public string Value { get; set; }

    public PropertyDto Property { get; set; } = new PropertyDto();

}


public class PropertyDto

{

    public int Id { get; set; }

    public string Title { get; set; }

    public InputTypes InputType { get; set; } = new InputTypes();

    public ValueTypes ValueType { get; set; } = new ValueTypes();

}


查看完整回答
反对 回复 2021-10-24
?
婷婷同学_

TA贡献1844条经验 获得超8个赞

我总是在 .net 4x 框架项目中使用automapper映射工具,但是当我开发 .net 核心项目时,我总是使用并推荐mapster映射工具。它非常快速和简单!基准测试结果它还可以解决您的问题。您可以在下面查看示例用法。


首先创建一个映射器类。


public static class Mapper

{

    public static void CreateMap()

    {

        TypeAdapterConfig<Property, PropertyDto>

            .NewConfig();


        TypeAdapterConfig<DropdownValue, DropdownValueDto>

            .NewConfig();

    }

}

启动时初始化


    public Startup(IHostingEnvironment env)

    {

        // other stuffs


        // Mapping

        Mapper.CreateMap();

    }

用法


dropdownValues.Adapt<List<Models.DropdownValue>, List<DropdownValueDto>>()


查看完整回答
反对 回复 2021-10-24
  • 2 回答
  • 0 关注
  • 272 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信