在 ASP.NET Core 中使用 AutoMapper 使 Entity 和 Resource 之间进行映射

一、从 NuGet 安装 AutoMapper

在使用 AutoMapper 时,核心的包是 AutoMapperAutoMapper.Extensions.Microsoft.DependencyInjection

PM> Install-Package AutoMapper
PM> Install-Package AutoMapper.Extensions.Microsoft.DependencyInjection

二、添加 Entity类 和 Resource类

在项目添加 Post类 和 Resource类。

	// Entity类
    public class Post
    {
        public int PostId { get; set; }
        public string Title { get; set; }
        public string Content { get; set; }
        public DateTime LastModified { get; set; }
    }
	
	// Resource类
    public class PostResource
    {
        public int PostId { get; set; }
        public string Title { get; set; }
        public string Content { get; set; }
        public DateTime UpdateTime { get; set; }
    }

三、添加一个 Profile文件,配置映射关系

随后我们需要继承Profile类来配置映射关系

	public class MappingProfile: Profile
	{
		//从Post到PostResource的映射
		CreateMap<Post, PostResource>()
			// 对名字不同的字段配置映射
			.ForMember(dest => dest.UpdateTime, opt => opt.MapFrom(src => src.LastModified));;
		//从PostResource到Post的映射,此处没有对名称不同的字段进行映射
		CreateMap<PostResource, Post>();
	}

四、在Startup中对AutoMapper进行注册

在Startup类的ConfigureServices方法中进行注册

	services.AddAutoMapper();

注册以后会自动找到MappingProfile类。

五、在项目中使用AutoMapper进行映射

示例如下:

    [Route("api/[controller]")]
    [ApiController]
    public class ValuesController : ControllerBase
    {
        private readonly MyContext _myContext;
        private readonly IMapper _mapper;

        public ValuesController(MyContext myContext, IMapper mapper)
        {
            _myContext = myContext;
            _mapper = mapper;
        }

        [HttpGet]
        public ActionResult<IEnumerable<string>> Get(int id)
        {
            Post post = _myContext.Posts.Find(id);
            PostResource postResource = _mapper.Map<Post, PostResource>(post);

            List<Post> posts = _myContext.Posts.ToList();
            IEnumerable<PostResource> postResources = _mapper
            	.Map<IEnumerable<Post>, IEnumerable<PostResource>>(posts);
            return new string[] { "value1", "value2" };
        }
    }


参考文档

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是在 .NET 6 ASP.NET Core Web API 使用 AutoMap 的初始化和帮助类。 首先,你需要在你的项目添加 AutoMap 的 NuGet 包。在 Visual Studio ,右键点击项目,选择“Manage NuGet Packages”,然后搜索 AutoMap 并安装。 接下来,你需要创建一个帮助类来帮助你初始化 AutoMap。这个类可以是一个静态类,包含一个静态的初始化方法。这个初始化方法将会注册你的 Mapper 配置,以便在应用程序启动时自动执行。 ```csharp using AutoMapper; public static class AutoMapperConfig { public static void Initialize() { MapperConfiguration config = new MapperConfiguration(cfg => { // 在这里进行你的 Mapper 配置 cfg.CreateMap<SourceClass, DestinationClass>(); }); IMapper mapper = config.CreateMapper(); Mapper = mapper; } public static IMapper Mapper { get; private set; } } ``` 在你的 Startup.cs 文件,你可以在 ConfigureServices 方法调用这个初始化方法: ```csharp public void ConfigureServices(IServiceCollection services) { // 其他配置... AutoMapperConfig.Initialize(); } ``` 现在,你可以在你的控制器或其他服务注入 IMapper 接口,使用 AutoMap 进行对象映射了。 ```csharp using AutoMapper; public class MyController : ControllerBase { private readonly IMapper _mapper; public MyController(IMapper mapper) { _mapper = mapper; } public IActionResult MyAction() { SourceClass source = new SourceClass(); DestinationClass destination = _mapper.Map<DestinationClass>(source); // 其他代码... } } ``` 这样,你就可以在 .NET 6 ASP.NET Core Web API 使用 AutoMap 了。希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值