Home Backend Development C#.Net Tutorial Examples of AutoMapper applications in C#

Examples of AutoMapper applications in C#

May 15, 2018 am 11:37 AM
.net

Recently I discovered a more interesting thing, AutoMapper, which mainly converts Model into DTO. DTO pays more attention to data and reasonably encapsulates domain objects, so as not to over-expose the behavior of domain objects to the presentation layer.

Let’s look at some examples first, the mapping between the two classes.

First define two classes, Source and DTOSource:

public class Source
    {
        public int Id { get; set; }
        public string Content { get; set; }
    }

    public class DTOSource
    {
        public int Id { get; set; }
        public string Content { get; set; }
    }
Copy after login

The Source and DTOSource fields are exactly the same. Let’s see how they are converted through AutoMapper. The code is very simple.

Mapper.Initialize(x=>{
     x.CreateMap<Source,DTOSource>();
});

Source s = new Source{Id=1,Content="123"};

DTOSource dto = Mapper.Map<DTOSource>(s);
Copy after login

The first step is to establish the mapping between Source and DTOSource. After initializing a Source instance, look at the execution results:

After the execution is completed, You can see that the data in dto is the same as the data in s that was initialized before. It is like directly copying s to dto. This is true when the two class fields are named the same. Then if the data in DTOSource No matter how the field name is different from that in Source, it is actually very simple. You only need to change it to a little bit of code:

We will change the field name of Content in DTOSource to Desc, at this time you only need to specify the fields when establishing a mapping relationship:

1 Mapper.Initialize(x => {
2    x.CreateMap<Source, DTOSource>().ForMember(c=>c.Desc,q=> {
3       q.MapFrom(z => z.Content);
4      });
5 });
Copy after login

Let’s see the running results;

You can see the The results from the previous run are the same.

So how to map two Lists is actually very simple. It is almost the same as the above code. It is just a little modification in the last step. As shown in the following code:

Mapper.Initialize(x => {
                x.CreateMap<Source, DTOSource>().ForMember(c => c.Desc, q =>
                {
                    q.MapFrom(z => z.Content);
                });
            });

            s.Add(new Source { Id = 1, Content = "123" });

            var dto = Mapper.Map<List<DTOSource>>(s);
Copy after login

You can see that except for the last sentence of code, the others are almost identical, except that in the last sentence of code, the target type is changed to ListThat's all. Take a look at the running results:

The results are in line with expectations.

In actual projects, this way of writing definitely does not meet the requirements. Generally, an encapsulation is made, and a new SourceProfile is inherited from Profile:

1  public SourceProfile()
2         {
3             base.CreateMap<Source, DTOSource>().ForMember(c => c.Desc, q => {
4                 q.MapFrom(z => z.Content);
5             });
6         }
Copy after login

All mapping relationships can be written here In a class, it only needs to be called once during program initialization:

 
1
 Mapper.Initialize(x =>{  x.AddProfile<SourceProfile>(); });
Copy after login

The AutoMapper version used by the blogger is 6.1.1.0. Because AutoMapper removed Configure in Profile in version 6.0, it is the same as The writing method for versions below 6.0 is a little different. The writing method for versions below 6.0 is:

public class SourceProfile : Profile
    {
        protected override void Configure()
        {
            CreateMap<Source, DTOSource>().ForMember(c => c.Desc, q => {
                q.MapFrom(z => z.Content);
            });
        }
    }
Copy after login

Just inherit Profile and rewrite its Configure. The calling method is not much different from the above. One or more Profiles can be added to Mapper.Initialize.

In the application of MVC project, Mapper.Initialize can be encapsulated into a class;

 public static class AutoMapperForMvc
    {        public  static void Register()
        {
            Mapper.Initialize(x => {
                x.AddProfile<SourceProfile>();
            });
        }

    }
Copy after login

Then register it once in Global of MVC:

public class MvcApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
            //注册
            AutoMapperForMvc.Register();
        }
    }
Copy after login

The above is the detailed content of Examples of AutoMapper applications in C#. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Roblox: Bubble Gum Simulator Infinity - How To Get And Use Royal Keys
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Fusion System, Explained
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

Java Tutorial
1664
14
PHP Tutorial
1268
29
C# Tutorial
1248
24
Share several .NET open source AI and LLM related project frameworks Share several .NET open source AI and LLM related project frameworks May 06, 2024 pm 04:43 PM

The development of artificial intelligence (AI) technologies is in full swing today, and they have shown great potential and influence in various fields. Today Dayao will share with you 4 .NET open source AI model LLM related project frameworks, hoping to provide you with some reference. https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.mdSemanticKernelSemanticKernel is an open source software development kit (SDK) designed to integrate large language models (LLM) such as OpenAI, Azure

What are the employment prospects of C#? What are the employment prospects of C#? Oct 19, 2023 am 11:02 AM

Whether you are a beginner or an experienced professional, mastering C# will pave the way for your career.

.NET performance optimization technology for developers .NET performance optimization technology for developers Sep 12, 2023 am 10:43 AM

If you are a .NET developer, you must be aware of the importance of optimizing functionality and performance in delivering high-quality software. By making expert use of the provided resources and reducing website load times, you not only create a pleasant experience for your users but also reduce infrastructure costs.

Performance differences between Java framework and .NET framework Performance differences between Java framework and .NET framework Jun 03, 2024 am 09:19 AM

In terms of high-concurrency request processing, .NETASP.NETCoreWebAPI performs better than JavaSpringMVC. The reasons include: AOT early compilation, which reduces startup time; more refined memory management, where developers are responsible for allocating and releasing object memory.

C# .NET: Exploring Core Concepts and Programming Fundamentals C# .NET: Exploring Core Concepts and Programming Fundamentals Apr 10, 2025 am 09:32 AM

C# is a modern, object-oriented programming language developed by Microsoft and as part of the .NET framework. 1.C# supports object-oriented programming (OOP), including encapsulation, inheritance and polymorphism. 2. Asynchronous programming in C# is implemented through async and await keywords to improve application responsiveness. 3. Use LINQ to process data collections concisely. 4. Common errors include null reference exceptions and index out-of-range exceptions. Debugging skills include using a debugger and exception handling. 5. Performance optimization includes using StringBuilder and avoiding unnecessary packing and unboxing.

C# .NET Interview Questions & Answers: Level Up Your Expertise C# .NET Interview Questions & Answers: Level Up Your Expertise Apr 07, 2025 am 12:01 AM

C#.NET interview questions and answers include basic knowledge, core concepts, and advanced usage. 1) Basic knowledge: C# is an object-oriented language developed by Microsoft and is mainly used in the .NET framework. 2) Core concepts: Delegation and events allow dynamic binding methods, and LINQ provides powerful query functions. 3) Advanced usage: Asynchronous programming improves responsiveness, and expression trees are used for dynamic code construction.

The Continued Relevance of C# .NET: A Look at Current Usage The Continued Relevance of C# .NET: A Look at Current Usage Apr 16, 2025 am 12:07 AM

C#.NET is still important because it provides powerful tools and libraries that support multiple application development. 1) C# combines .NET framework to make development efficient and convenient. 2) C#'s type safety and garbage collection mechanism enhance its advantages. 3) .NET provides a cross-platform running environment and rich APIs, improving development flexibility.

From Web to Desktop: The Versatility of C# .NET From Web to Desktop: The Versatility of C# .NET Apr 15, 2025 am 12:07 AM

C#.NETisversatileforbothwebanddesktopdevelopment.1)Forweb,useASP.NETfordynamicapplications.2)Fordesktop,employWindowsFormsorWPFforrichinterfaces.3)UseXamarinforcross-platformdevelopment,enablingcodesharingacrossWindows,macOS,Linux,andmobiledevices.

See all articles