AutoMapper 9.0 在.Net Core 下的使用教程

本文介绍了AutoMapper 9.0在.NET Core 3.0环境下的使用方法,包括依赖注入(DI)注册、配置Profile、以及与旧版本的区别,如静态API的移除。通过示例展示了如何创建Profile、注册映射以及如何在项目中便捷地使用AutoMapper。

AutoMapper升级为9.0之后,优化了(简化了)很多使用方法,特别是结合Core系统本身的一些改进,造成了曾经的9.0 以前版本不一样的地方。现做一个总结,代码再某个角度上讲还可以进行优化,欢迎大佬斧正。

环境

vs2019 

.Net Core 3.0

AutoMapper 9.0

项目 .Net Core WebApi

 

 

*step 0: 本文从Core自带的DI方式来注册使用AutoMapper(目前9.0已经停止了静态api注册,官方推荐注入方式使用)

step 1:首先还是需要直接Nutget两个包:

准备两个数据类

public class User
{
public string Name{get; set;}
}

public class UserDto
{
public string Name{get; set;}
}

step 2 : profile配置

Using AutoMapper;
...
  public class UserProfile:Profile
    {
        public UserProfile()
        {
            CreateMap<UserDto, User>();
            CreateMap<User, UserDto>();
        }
    }

 

step 3:入口配置

在startup.cs的

 public void ConfigureServices(IServiceCollection services)
        { 
          services.AddAutoMapper(typeof(Userprofile));
        }

参考官网说明

按照官网说明可以配置继承profile类或者程序集的集合,也就是可以写成(这是比9.0之前更直观的地方,也比之前更方便的扩展)

eg:

<Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <TargetFramework>net9.0</TargetFramework> <Nullable>enable</Nullable> <ImplicitUsings>enable</ImplicitUsings> <UserSecretsId>aspnet-UserManagementSystem.Web-1b679971-7546-4347-9974-3575660d05fc</UserSecretsId> <!-- 启用 Razor 编译支持 --> <MvcRazorCompileOnPublish>true</MvcRazorCompileOnPublish> <PreserveCompilationReferences>true</PreserveCompilationReferences> </PropertyGroup> <ItemGroup> <None Update="app.db" CopyToOutputDirectory="PreserveNewest" ExcludeFromSingleFile="true" /> </ItemGroup> <ItemGroup> <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="12.0.1" /> <PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="9.0.8" /> <PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="9.0.9" /> <PackageReference Include="Microsoft.AspNetCore.Identity.UI" Version="9.0.9" /> <!-- 删除 Microsoft.AspNetCore.Mvc.TagHelpers 手动引用 --> <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="9.0.9"> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <PrivateAssets>all</PrivateAssets> </PackageReference> <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="9.0.8" /> <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="9.0.9" /> <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="9.0.8" /> <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="9.0.0" /> </ItemGroup> </Project> 这是我的csproj文件
最新发布
10-06
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值