比AutoMapper轻量快速简洁的实体映射库YeaJur.Mapper
之前在做实体深拷贝时一直使用的AutoMapper,但是总是觉得其写法比繁琐,效率也不算很高,自己写了一个轻量级的实体拷贝库YeaJur.Mapper,和AutoMapper 测试对比如下
|
PK项 |
YeaJur.Mapper |
AutoMapper |
||||
|
版本 |
1.0 |
5.2 |
||||
|
大小 |
6KB |
247KB |
||||
|
相同类型深拷贝——实例(json格式) |
[ { "Products": [ { "Id": "7ef9516e-e019-4b54-9636-89fc56b2906f", "Name": "YeaJur.Mapper", "Count": 32, "CreateTime": "/Date(1484796223405)/", "Price": 12.32, "SupplierInfo": { "Id": "00293c28-b29a-4e2c-b5a2-6411d8a67d9e", "Name": "YeaJur.Mapper", "Other": null } }, { "Id": "42f8157a-0f25-472b-9b15-15bc876abeff", "Name": "YeaJur.Mapper", "Count": 32, "CreateTime": "/Date(1484796223406)/", "Price": 12.32, "SupplierInfo": { "Id": "24e5b9af-5108-462b-924f-b79bf9c1b160", "Name": "YeaJur.Mapper", "Other": null } }, { "Id": "70a3414b-2c76-4417-a47c-4b807301f0f5", "Name": "YeaJur.Mapper", "Count": 32, "CreateTime": "/Date(1484796223406)/", "Price": 12.32, "SupplierInfo": { "Id": "1990168f-244d-42b8-8276-7ee08e0829a0", "Name": "YeaJur.Mapper", "Other": null } } ], "SellerInfo": { "Id": "31875b3f-970d-4383-9d2f-b769c3e7cc87", "Name": "YeaJur.Mapper", "Remark": "YeaJur.Mapper" } }, { "Products": [ { "Id": "cd78b31d-0e83-4586-a202-f45349eabe98", "Name": "YeaJur.Mapper", "Count": 32, "CreateTime": "/Date(1484796223406)/", "Price": 12.32, "SupplierInfo": { "Id": "e4ade655-22e3-4850-96dc-02f7059479b8", "Name": "YeaJur.Mapper", "Other": null } }, { "Id": "20d2219b-d520-4c58-840e-c11b10e8878f", "Name": "YeaJur.Mapper", "Count": 32, "CreateTime": "/Date(1484796223406)/", "Price": 12.32, "SupplierInfo": { "Id": "3817b018-369a-4413-b0df-cde5a877d0d7", "Name": "YeaJur.Mapper", "Other": null } }, { "Id": "b83d5db6-1216-4a56-a448-d5c478a30b32", "Name": "YeaJur.Mapper", "Count": 32, "CreateTime": "/Date(1484796223406)/", "Price": 12.32, "SupplierInfo": { "Id": "321b2dad-7d66-42d0-b75d-c019cd297a1b", "Name": "YeaJur.Mapper", "Other": null } } ], "SellerInfo": { "Id": "c7e7f104-3484-4640-9003-ad6ddd5cb3dc", "Name": "YeaJur.Mapper", "Remark": "YeaJur.Mapper" } }, { "Products": [ { "Id": "1d8c2158-008c-4ad1-8803-915a5e32c695", "Name": "YeaJur.Mapper", "Count": 32, "CreateTime": "/Date(1484796223406)/", "Price": 12.32, "SupplierInfo": { "Id": "58c89199-c1fc-4c94-8d74-3ee3db5f074b", "Name": "YeaJur.Mapper", "Other": null } }, { "Id": "311ca89e-be6c-4bcf-8730-12abb1388319", "Name": "YeaJur.Mapper", "Count": 32, "CreateTime": "/Date(1484796223406)/", "Price": 12.32, "SupplierInfo": { "Id": "87f3c2ce-d6bd-4cfb-bcf0-9a48615b223c", "Name": "YeaJur.Mapper", "Other": null } }, { "Id": "5d23505c-206a-4bdc-9086-92532fcf37d7", "Name": "YeaJur.Mapper", "Count": 32, "CreateTime": "/Date(1484796223406)/", "Price": 12.32, "SupplierInfo": { "Id": "e5582774-ca39-43e0-8e78-9511ea96061b", "Name": "YeaJur.Mapper", "Other": null } } ], "SellerInfo": { "Id": "9f1b4e00-bf00-4946-8e8a-a2780c118079", "Name": "YeaJur.Mapper", "Remark": "YeaJur.Mapper" } } ] |
|||||
|
相同类型深拷贝——写法 |
var model = list.Map(); |
AutoMapper.Mapper.Initialize(cfg => { cfg.CreateMap<List<Order>, List<Order>>(); }); var model = AutoMapper.Mapper.Map<List<Order>>(list); |
||||
|
相同类型深拷贝——运行结果样例 |
||||||
|
相同类型深拷贝——运行平均速度 |
12.2ms(包括创建实体时间) |
160.2ms(包括创建实体时间) |
||||
|
不同类型深拷贝——实例(json格式) |
{ "Id": "b0ade704-0a59-481a-b4b8-bf64a2fdaa8f", "Name": "YeaJur.Mapper", "Remark": "YeaJur.Mapper.Seller" } 和 { "Id": "b0ade704-0a59-481a-b4b8-bf64a2fdaa8f", "Name": "YeaJur.Mapper", "Other": null } |
|||||
|
不同类型深拷贝——写法 |
Supplier model2 = model.Map<Supplier>(); 或 Supplier model2 = model.Map<Seller,Supplier>(); |
AutoMapper.Mapper.Initialize(cfg => { cfg.CreateMap<Seller, Supplier>(); }); Supplier model2 = AutoMapper.Mapper.Map<Seller, Supplier>(model); |
||||
|
不同类型深拷贝——运行结果样例 |
||||||
|
不同类型深拷贝——运行平均速度 |
9.6ms(包括创建实体时间) |
174.6ms(包括创建实体时间) |
||||
|
不同类型自定义字段深拷贝——实例(json格式) |
{ "Id": "b0ade704-0a59-481a-b4b8-bf64a2fdaa8f", "Name": "YeaJur.Mapper.Seller", "Remark": "YeaJur.Mapper.Seller" } 和 { "Id": "b0ade704-0a59-481a-b4b8-bf64a2fdaa8f", "Name": "YeaJur.Mapper", "Other": null } |
|||||
|
不同类型自定义字段深拷贝——写法 |
var dic = new Dictionary<string, string> { {nameof(Seller.Remark), nameof(Supplier.Other)} }; Supplier model2 = model.Map< Supplier>(dic); 或 Supplier model2 = model.Map<Seller, Supplier>(dic); |
AutoMapper.Mapper.Initialize(cfg => { cfg.CreateMap<Seller, Supplier>(); cfg.ReplaceMemberName(nameof(Seller.Remark), nameof(Supplier.Other)); }); Supplier model2 = AutoMapper.Mapper.Map<Seller, Supplier>(model); |
||||
|
不同类型自定义字段深拷贝——运行结果样例 |
||||||
|
不同类型自定义字段深拷贝——运行平均速度 |
10.2ms(包括创建实体时间) |
176.4ms(包括创建实体时间) |
||||
在项目的nuget中搜索 Yeajur.Mapper 即可下载使用
https://www.nuget.org/packages/YeaJur.Mapper
比AutoMapper轻量快速简洁的实体映射库YeaJur.Mapper的更多相关文章
- vue 移动端轻量日期组件不依赖第三方库
Vue版移动端日期选择组件 1.优点:不需要依赖其他第三方库,灵活可配置: 不需要依赖第三方组件的vue日期移动端组件 小轮子 轻量可复用: https://github.com/BeckReed ...
- wangEditor-基于javascript和css开发的 Web富文本编辑器, 轻量、简洁、易用、开源免费(2)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Skippr – 轻量、快速的 jQuery 幻灯片插件
Skippr 是一个超级简单的 jQuery 幻灯片插件.只是包括你的网页中引入 jquery.skippr.css 和 jquery.skippr.js 文件就能使用了.Skippr 能够自适应窗口 ...
- Hexo - 快速,轻量,强大的 Node.js 博客框架
Hexo 是一个快速,轻量,强大的 Node.js 博客框架.带给你难以置信的编译速度,瞬间生成静态文件:支持 Markdown,甚至可以在 Hexo 中集合 Octopress 插件:只需要一个命令 ...
- Just 5分钟!使用k3s部署轻量Kubernetes集群快速教程
大小仅有40MB的k3s为想要节省开销进行开发和测试的企业提供了一个很好的选择.本文将用一种极为简洁的方式,教你在5分钟之内使用k3s部署轻量Kubernetes集群. Kubernetes已经改变了 ...
- 对标 Spring Boot & Cloud ,轻量框架 Solon 1.5.2 重要发布
Solon 是一个轻量的Java基础开发框架.强调,克制 + 简洁 + 开放的原则:力求,更小.更快.更自由的体验.支持:RPC.REST API.MVC.Job.Micro service.WebS ...
- Dapper.NET——轻量ORM
Dapper.NET使用 http://www.cnblogs.com/yankliu-vip/p/4182892.html 本文目录 Dapper.NET使用 1.为什么选择Dapper 2.以Da ...
- 轻量的web框架Bottle
简洁的web框架Bottle 简介 Bottle是一个非常简洁,轻量web框架,与django形成鲜明的对比,它只由一个单文件组成,文件总共只有3700多行代码,依赖只有python标准库.但是麻雀虽 ...
- 轻量高效的开源JavaScript插件和库 【转】
图片 布局 轮播图 弹出层 音频视频 编辑器 字符串 表单 存储 动画 时间 其它 加载器 构建工具 测试 包管理器 CDN 图片 baguetteBox.js - 是一个简单易用的响应式图像灯箱效果 ...
随机推荐
- 计算机学院大学生程序设计竞赛(2015’12) 1001 The Country List
#include<cstdio> #include<cstring> #include<cmath> #include<string> #include ...
- 照着例子学习 protobuf-lua
参考文章:cocos2dx使用lua和protobuf 首先得下载protobuf-gen-lua的插件,插件Git地址在此. 下载完之后进入到protoc-gen-lua\plugin这个目录,并在 ...
- Nginx 负载均衡 后端服务器获取前端用户真实IP
Nginx 后端 日志文件 获取的都是 前端 负载均衡器的IP 想要获取用户的真实IP 必须 使用Nginx 的模块 http_realip_module 才行!! 1. 编译 Nginx 的时候 ...
- linux命令学习-2-dmesg
DMESG NAME dmesg - print or control the kernel ring buffer(打印或者控制内核环缓冲) Usage: dmesg [options] Optio ...
- matlab unique 顺序不变
对于一个向量,使用unique去重后会自动排序,为了保持原顺序: A = [5,1,8,5,2,8,3,9,6,1];[i,j] = unique(A,'first');B = A(sort(j)); ...
- 【Xilinx-Petalinux学习】-05-OpenCV程序测试
占位, 通过上一次编译的opencv库,运行程序,实现图像处理
- 设置ubuntu下使用ls命令显示文件颜色显示
文件颜色属性: # Attribute codes: 字符属性# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed#00无 ...
- 数据可视化-OmniGraffle软件
OmniGraffle Pro for mac破解版是一款运行在MAC OS平台上的思维导图流程图制作软件,通过思维导图软件(OmniGraffle Pro MAC)帮你组织头脑中思考的信息,组织头脑 ...
- Ubuntu14.04下搭建VPN服务
直接上步骤: 1.第一步需要安装PPTP,以用来提供VPN服务. sudo apt-get install pptpd 如果有问题的话比如提示找不到之类的,apt-get update 一下应该就可以 ...
- Tomcat用法--Servlet开发
本来想玩一下微信公众号开发,没想到学习曲线真是恶心的很,首先你要配置Tomcat--你要会Servlet--你要会JSP,妈的!贴出来 快哭瞎了,各种文档,好吧,提供一个教你搞java EE文档的博客 ...