Cara bekerja dengan AutoMapper di C #

AutoMapper adalah perpustakaan pemetaan objek-ke-objek yang popular yang dapat digunakan untuk memetakan objek milik jenis yang tidak serupa. Sebagai contoh, anda mungkin perlu memetakan DTO (Objek Pemindahan Data) dalam aplikasi anda ke objek model. AutoMapper menjimatkan usaha membosankan anda untuk memetakan secara manual satu atau lebih sifat dari jenis yang tidak sesuai.

Untuk mula bekerja dengan AutoMapper, anda harus membuat projek di Visual Studio dan kemudian memasang AutoMapper. Anda boleh memasang AutoMapper dari NuGet menggunakan arahan berikut di tetingkap Konsol Pengurus Pakej NuGet:

PM> AutoMapper Pemasangan-Pakej

Buat pemetaan menggunakan AutoMapper

Pemeta objek-ke-objek seperti AutoMapper menukar objek input dari satu jenis menjadi objek output dari jenis lain. Pertimbangkan dua kelas berikut.

 PengarangModel kelas awam

    {

        awam int Id

        {

            dapatkan; menetapkan;

        }

        rentetan awam FirstName

        {

            dapatkan; tetapkan;

        }

        rentetan umum Nama Akhir

        {

            dapatkan; menetapkan;

        }

        rentetan awam Alamat

        {

            dapatkan; menetapkan;

        }

    }

 kelas awam AuthorDTO

    {

        awam int Id

        {

            dapatkan; menetapkan;

        }

        rentetan awam FirstName

        {

            dapatkan; menetapkan;

        }

        rentetan umum Nama Akhir

        {

            dapatkan; menetapkan;

        }

        rentetan awam Alamat

        {

            dapatkan; menetapkan;

        }

    }

Coretan kod berikut menunjukkan bagaimana anda boleh membuat peta antara dua jenis ini, AuthorModel dan AuthorDTO.

var config = Konfigurasi Mapper baru (cfg => {

                cfg.CreateMap ();

            });

Kemudian untuk melakukan pemetaan antara jenisnya semudah sekeping kod berikut menunjukkan.

IMapper iMapper = config.CreateMapper ();

sumber var = ModelModel baru ();

var destination = iMapper.Map (sumber);

Contoh AutoMapper 

Mari sekarang bekerja dengan beberapa data. Lihat bahagian kod berikut yang menyimpan beberapa data ke dalam objek sumber dan kemudian memaparkan nilai-nilai properti di objek tujuan setelah pemetaan selesai.

var config = Konfigurasi Mapper baru (cfg => {

                cfg.CreateMap ();

            });

IMapper iMapper = config.CreateMapper ();

sumber var = ModelModel baru ();

sumber.Id = 1;

sumber.FirstName = "Joydip";

sumber.LastName = "Kanjilal";

sumber.Address = "India";

var destination = iMapper.Map (sumber);

Console.WriteLine ("Nama Pengarang:" + destination.FirstName + "" + destination.LastName);

Apabila anda melaksanakan kod di atas, nama pengarang yang disimpan di dalam objek tujuan akan dipaparkan. Walau bagaimanapun, nilai-nilai sifat FirstName dan tujuan LastName akan sama dengan objek sumber kerana anda berjaya memetakan objek dengan menggunakan AutoMapper!

Perhatikan bahawa AutoMapper dapat memetakan sekumpulan kelas. Namun, AutoMapper mengikuti konvensyen tertentu, salah satunya ialah nama harta tanah yang dipetakan harus mempunyai nama yang sama. Sekiranya nama-nama harta tanah tidak serupa, maka anda mesti memberitahu AutoMapper bagaimana hartanah tersebut harus dipetakan. Dengan andaian bahawa kita ingin memetakan dua sifat Contact and DetailDetails, contoh berikut menggambarkan bagaimana ini dapat dicapai.

var config = Konfigurasi Mapper baru (cfg => {

                cfg.CreateMap ()

                .ForMember (destination => destination.ContactDetails,

               opts => opts.MapFrom (source => source.Contact));

            });

Perhatikan pernyataan berikut yang digunakan untuk membuat objek tujuan.

var destination = iMapper.Map (sumber);

Sekiranya objek tujuan sudah ada, anda boleh menggunakan pernyataan di bawah.

iMapper.Map (sourceObject, destinationObject);

Pada hakikatnya, coretan kod di atas dapat digunakan untuk memetakan dua objek yang sudah ada.

Menggunakan unjuran dalam AutoMapper

AutoMapper memberikan sokongan yang sangat baik untuk unjuran. Unjuran digunakan untuk memetakan nilai sumber ke destinasi yang tidak sesuai dengan struktur sumber. (Sebaliknya, pemetaan yang telah kita bincangkan di atas adalah pemetaan satu lawan satu.)

Sekarang mari kita melihat unjuran. Contohnya, pertimbangkan kelas berikut.

 alamat kelas awam

    {

        rentetan awam Bandar {get; menetapkan; }

        rentetan awam Negeri {get; menetapkan; }

        rentetan awam Negara {get; menetapkan; }

    }

Mari kita kelas AuthorModel kami menggunakan kelas Alamat untuk menyimpan maklumat alamat pengarang. Inilah rupa kelas AuthorModel yang dikemas kini.

 PengarangModel kelas awam

    {

        awam int Id

        {

            dapatkan; menetapkan;

        }

        rentetan awam FirstName

        {

            dapatkan; tetapkan;

        }

        rentetan umum Nama Akhir

        {

            dapatkan; menetapkan;

        }

        alamat awam alamat

        {

            dapatkan; menetapkan;

        }

    }

 Dan inilah kelas AuthorDTO yang dikemas kini.

kelas awam AuthorDTO

    {

        awam int Id

        {

            dapatkan; menetapkan;

        }

        rentetan awam FirstName

        {

            dapatkan; menetapkan;

        }

        rentetan umum Nama Akhir

        {

            dapatkan; menetapkan;

        }

        rentetan awam Bandar {get; menetapkan; }

        rentetan awam Negeri {get; menetapkan; }

        rentetan awam Negara {get; menetapkan; }

    }

Sekarang anggap kita perlu memetakan kelas AuthorDTO dan AuthorModel. Coretan kod berikut menggambarkan bagaimana ini dapat dicapai.

var config = Konfigurasi Mapper baru (cfg => {

                cfg.CreateMap ()

                   .ForMember (destination => destination. Alamat,

              peta => peta.MapFrom (

                  sumber => Alamat baru

                  {

                      Bandar = sumber. Bandar,

                      Nyatakan = sumber. Negeri,

                      Negara = sumber.Negara

                  }));

Saya akan membincangkan ciri AutoMapper yang lebih maju dalam catatan yang akan datang di sini. Sehingga itu, anda boleh mengetahui lebih lanjut mengenai AutoMapper di pautan ini.

Cara melakukan lebih banyak perkara di C #:

  • Bilakah menggunakan kelas abstrak vs antara muka dalam C #
  • Cara bekerja dengan AutoMapper di C #
  • Cara menggunakan ungkapan lambda dalam C #
  • Cara bekerjasama dengan delegasi Action, Func, dan Predicate di C #
  • Cara bekerja dengan perwakilan di C #
  • Cara melaksanakan pembalak sederhana di C #
  • Cara bekerja dengan atribut di C #
  • Cara bekerja dengan log4net di C #
  • Cara melaksanakan corak reka bentuk repositori di C #
  • Cara bekerja dengan refleksi di C #
  • Cara bekerja dengan pemantau sistem fail di C #
  • Cara melakukan inisial malas di C #
  • Cara bekerja dengan MSMQ di C #
  • Cara bekerja dengan kaedah peluasan di C #
  • Bagaimana untuk kami ungkapan lambda dalam C #
  • Bilakah menggunakan kata kunci tidak stabil dalam C #
  • Cara menggunakan kata kunci hasil dalam C #
  • Cara melaksanakan polimorfisme dalam C #
  • Bagaimana membina penjadual tugas anda sendiri di C #
  • Cara bekerja dengan RabbitMQ di C #
  • Cara bekerja dengan tuple di C #
  • Meneroka kaedah maya dan abstrak dalam C #