怪奇物语

怪奇物语

首页 新随笔 联系 管理

AutoMapper的使用

根据上传的文件内容,可以看到AutoMapper被用来映射不同对象之间的属性。具体来说,它用于将一个类的实例转换为另一个类的实例,而这两个类拥有相似的结构或部分相似的属性。以下是基于提供的代码对AutoMapper用法的总结:

  1. 安装和引用

    • TodoList.Api.csproj文件中,我们看到项目引用了AutoMapperAutoMapper.Extensions.Microsoft.DependencyInjection包。
      <PackageReference Include="AutoMapper" Version="12.0.1" />
      <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="12.0.1" />
      
  2. 注册服务

    • Startup.cs文件中的ConfigureServices方法里,通过调用services.AddAutoMapper(typeof(Startup));来注册AutoMapper服务。这会扫描当前程序集(即包含Startup类的程序集)并自动配置所有Profile类。
      services.AddAutoMapper(typeof(Startup));
      

    For .NET 6, we have to modify the Program class:

    builder.Services.AddAutoMapper(typeof(Program)); 
    
  3. 创建映射配置

    • TodoListMappingProfile.cs文件定义了一个继承自Profile的类,该类包含了具体的映射规则。在这个例子中,它建立了TodoItemTodoListDto之间双向的映射关系。
      public class TodoListMappingProfile : Profile
      {
          public TodoListMappingProfile()
          {
              CreateMap<TodoItem, TodoListDto>().ReverseMap();
          }
      }
      
  4. 使用映射

    • TodoItemsController.cs和其他控制器中,依赖注入了IMapper接口,并在需要的地方使用它来进行对象间的转换。例如,在GetTodoItem方法中,从数据库获取到的TodoItem实体被映射到了DTO(数据传输对象)TodoListDto

      return Ok(_mapper.Map<TodoListDto>(item));
      
    • 类似地,在PostTodoItem方法中,传入的DTO被映射回实体对象以进行保存或更新操作。

      await _service.CreateTodoItem(_mapper.Map<TodoItem>(todoItem));
      
posted on 2024-12-26 08:00  超级无敌美少男战士  阅读(91)  评论(0)    收藏  举报