当前位置:网站首页>. 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 .
边栏推荐
- operator
- QT compile IOT management platform 39 alarm linkage
- Implementation method of data platform landing
- Use br to back up tidb cluster data to azure blob storage
- Wechat official account oauth2.0 authorizes login and displays user information
- Oracle advanced (VI) Oracle expdp/impdp details
- Google SEO external chain backlinks research tool recommendation
- Reinforcement learning - learning notes 8 | Q-learning
- [colmap] sparse reconstruction is converted to mvsnet format input
- [开源] .Net ORM 访问 Firebird 数据库
猜你喜欢

为什么Win11不能显示秒数?Win11时间不显示秒怎么解决?

2022 how to evaluate and select low code development platforms?

QT compile IOT management platform 39 alarm linkage

Wechat official account oauth2.0 authorizes login and displays user information

Application practice | the efficiency of the data warehouse system has been comprehensively improved! Data warehouse construction based on Apache Doris in Tongcheng digital Department

NVR硬盘录像机通过国标GB28181协议接入EasyCVR,设备通道信息不显示是什么原因?

Automatic classification of defective photovoltaic module cells in electronic images

Use json Stringify() to realize deep copy, be careful, there may be a huge hole

Win11U盘不显示怎么办?Win11插U盘没反应的解决方法

What if the win11u disk does not display? Solution to failure of win11 plug-in USB flash disk
随机推荐
Jerry's manual matching method [chapter]
Matplotlib drawing interface settings
Pdf document signature Guide
Kirin Xin'an operating system derivative solution | storage multipath management system, effectively improving the reliability of data transmission
How to make agile digital transformation strategy for manufacturing enterprises
Index summary (assault version)
Win11U盘不显示怎么办?Win11插U盘没反应的解决方法
The maximum number of meetings you can attend [greedy + priority queue]
Jenkins user rights management
Redis - basic use (key, string, list, set, Zset, hash, geo, bitmap, hyperloglog, transaction)
L2:ZK-Rollup的现状,前景和痛点
Why can't win11 display seconds? How to solve the problem that win11 time does not display seconds?
Anti climbing killer
DNS series (I): why does the updated DNS record not take effect?
EasyCVR配置中心录像计划页面调整分辨率时的显示优化
QT compile IOT management platform 39 alarm linkage
How polardb-x does distributed database hotspot analysis
The essence of analog Servlet
[azure microservice service fabric] how to transfer seed nodes in the service fabric cluster
Which financial products will yield high returns in 2022?