当前位置:网站首页>. Net automapper use
. Net automapper use
2022-07-07 22:18:00 【freelooppowter】
When decomposing complex software systems , One of the technologies most used by software designers is layering . Layered right has many advantages : Such as improving reusability 、 Low coupling , But it also has its shortcomings : For example, too many levels will affect performance 、 Sometimes it brings us cascading modifications .
It will bring cascading modifications. How to understand ? For example, when the demand changes, a data field displayed on the user interface should be added , You must add corresponding fields to the data , You must also make corresponding changes at each layer between the user interface and the database . There will be different data entity classes in different levels ( Some classes also include methods ), In order to realize data transmission between these entity classes, the transformation before the class must be carried out , This kind of conversion can complete the task by handwritten code for one-to-one conversion , Just like the picture below , And you have to work for the corresponding List<T> Class to write the corresponding conversion method , There is a simpler and more convenient solution for you ? That's what the title says AutoMapper, From the name, we can see that this is a tool for mapping .
Go straight to the code , First, define the entity class that needs to be converted , The second step is to inherit Profile Interface , To register .
using AutoMapper; namespace WindowsFormsApp1 { /// <summary> /// Imitate the data entity classes that need to be converted /// </summary> public class Source { public int SomeValue { get; set; } public string AnotherValue { get; set; } } /// <summary> /// Imitate the data entity classes that need to be converted /// </summary> public class Destination { public int SomeValue { get; set; } } /// <summary> /// adopt Profile register /// tell AutoMapper Which classes need to be converted , If A convert to B,B It should also be converted into A, Then you need to write two /// </summary> public class SourceProfile : Profile { public SourceProfile() { CreateMap<Source, Destination>(); CreateMap<Destination, Source>(); } } }
The third step is to Profile The mapping relationship written in the Chinese book is added to Mapper example , The routine needs to write a method to get the unique Mapper example ( The singleton pattern ), The mapping relationship is configured in the instance .
using AutoMapper; namespace WindowsFormsApp1 { public class AutoMapperConfigure { public static IMapper GetMapper() { var config = new MapperConfiguration(cfg => { // Scan the current assembly cfg.AddMaps(System.AppDomain.CurrentDomain.GetAssemblies()); }); var mapper = config.CreateMapper(); return mapper; } } }
Step 4 call , By default ,AutoMapper Map based on the same field name , And is Case insensitive Of . You can also modify the configuration , Realization AutoMapper Provided naming rule mapping .LowerUnderscoreNamingConvention
and PascalCaseNamingConvention
yes AutoMapper Two naming rules provided . The former is named lowercase and contains underscores , The latter is Pascal's naming rule ( Capitalize each word ).
private void promptMessageButton_Click(object sender, EventArgs e) { Source source = new Source() { SomeValue = 1, AnotherValue = "Another" }; var mapper = AutoMapperConfigure.GetMapper(); Destination destination = mapper.Map<Destination>(source); MessageBox.Show(destination.SomeValue.ToString()); }
Like the first screenshot, the more complex one involves the conversion between enumeration and enumeration description , even to the extent that List<string> convert to string, It can also be used. AutoMapper Realization . You can call the written static method on the converted member property , To realize the quasi exchange according to the rules , Here's the picture .
Reference material :https://www.cnblogs.com/gl1573/p/13098031.html
Interested students can also see the official documents , There are also examples :https://docs.automapper.org/en/latest/
The students who read the blog suggest writing it by themselves , To borrow a sentence from Xunzi : No smell, no smell , You can't hear it, you can't see it , If you don't know what you see , What you know is not what you do . If you have any questions, please discuss with me .
边栏推荐
- Display optimization when the resolution of easycvr configuration center video recording plan page is adjusted
- 谈谈制造企业如何制定敏捷的数字化转型策略
- 2022 how to evaluate and select low code development platforms?
- 你可曾迷茫?曾经的测试/开发程序员,懵懂的小菜C鸟升级......
- Win11U盘不显示怎么办?Win11插U盘没反应的解决方法
- Dry goods sharing | devaxpress v22.1 original help document download collection
- Debugging and handling the problem of jamming for about 30s during SSH login
- Why can't win11 display seconds? How to solve the problem that win11 time does not display seconds?
- Lingyun going to sea | saihe & Huawei cloud: jointly help the sustainable development of cross-border e-commerce industry
- 23. Merge K ascending linked lists -c language
猜你喜欢
South China x99 platform chicken blood tutorial
Pre sale 179000, hengchi 5 can fire? Product power online depends on how it is sold
解决uni-app中uni.request发送POST请求没有反应。
How to quickly check whether the opening area ratio of steel mesh conforms to ipc7525
2022 how to evaluate and select low code development platforms?
用语雀写文章了,功能真心强大!
[JDBC Part 1] overview, get connection, CRUD
ByteDance Android interview, summary of knowledge points + analysis of interview questions
How does win11 time display the day of the week? How does win11 display the day of the week today?
谈谈制造企业如何制定敏捷的数字化转型策略
随机推荐
Navicat connect 2002 - can't connect to local MySQL server through socket '/var/lib/mysql/mysql Sock 'solve
#DAYU200体验官#MPPT光伏发电项目 DAYU200、Hi3861、华为云IotDA
Anti climbing killer
Use br to back up tidb cluster data to azure blob storage
[azure microservice service fabric] how to transfer seed nodes in the service fabric cluster
OpenGL configure assimp
Attitude estimation (complementary filtering)
Oracle advanced (VI) Oracle expdp/impdp details
Where is the big data open source project, one-stop fully automated full life cycle operation and maintenance steward Chengying (background)?
Reinforcement learning - learning notes 8 | Q-learning
[azure microservice service fabric] start the performance monitor in the SF node and set the method of capturing the process
大数据开源项目,一站式全自动化全生命周期运维管家ChengYing(承影)走向何方?
[开源] .Net ORM 访问 Firebird 数据库
DBSync新增对MongoDB、ES的支持
The free styling service of Dyson's official direct store is now open for appointment. Pioneer Technology interprets the styling concept of hair care and helps consumers unlock diversified and shiny s
The latest Android interview collection, Android video extraction audio
Jerry's test box configuration channel [chapter]
[open source] Net ORM accessing Firebird database
Dry goods sharing | devaxpress v22.1 original help document download collection
The difference between NPM uninstall and RM direct deletion