国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

ASP.NET Core MVC 從入門到精通之自動(dòng)映射(二)

這篇具有很好參考價(jià)值的文章主要介紹了ASP.NET Core MVC 從入門到精通之自動(dòng)映射(二)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

隨著技術(shù)的發(fā)展,ASP.NET Core MVC也推出了好長(zhǎng)時(shí)間,經(jīng)過不斷的版本更新迭代,已經(jīng)越來(lái)越完善,本系列文章主要講解ASP.NET Core MVC開發(fā)B/S系統(tǒng)過程中所涉及到的相關(guān)內(nèi)容,適用于初學(xué)者,在校畢業(yè)生,或其他想從事ASP.NET Core MVC 系統(tǒng)開發(fā)的人員。

經(jīng)過前幾篇文章的講解,初步了解ASP.NET Core MVC項(xiàng)目創(chuàng)建,啟動(dòng)運(yùn)行,以及命名約定,創(chuàng)建控制器,視圖,模型,接收參數(shù),傳遞數(shù)據(jù)ViewData,ViewBag,路由,頁(yè)面布局,wwwroot和客戶端庫(kù),Razor語(yǔ)法,EnityFrameworkCore與數(shù)據(jù)庫(kù),HttpContext,Request,Response,Session,序列化,文件上傳,自動(dòng)映射等內(nèi)容,今天繼續(xù)講解ASP.NET Core MVC 中自動(dòng)映射第二部分等相關(guān)內(nèi)容,僅供學(xué)習(xí)分享使用。

ASP.NET Core MVC 從入門到精通之自動(dòng)映射(二)

經(jīng)過上一篇文章的講解,已經(jīng)對(duì)ASP.NET Core中進(jìn)行自動(dòng)映射,有了一個(gè)初步的了解,今天繼續(xù)接著上一篇文章進(jìn)行講解自動(dòng)映射的第二部分內(nèi)容。

字符替換

在實(shí)際開發(fā)中,如果映射源存在一些特殊字符【如:? ,?等】,映射目標(biāo)是正常的字符,則需要進(jìn)行替換,才能映射。如下所示:

1 var configuration = new MapperConfiguration(c =>
2 {
3     c.ReplaceMemberName("?", "A");
4     c.ReplaceMemberName("í", "i");
5     c.ReplaceMemberName("Airlina", "Airline");
6 });

進(jìn)行以上配置之后,會(huì)自動(dòng)將?bc映射到Abc上,將íng映射到ing上,將AirlinaMark映射到AirlineMark上。

自動(dòng)映射匹配前綴與后綴

數(shù)據(jù)源一般都會(huì)有固定的風(fēng)格,如帶有前綴,后綴等標(biāo)識(shí)。那么如何將帶前綴的屬性映射到不帶前綴的的屬性上呢?

默認(rèn)情況下,帶前綴是無(wú)法自動(dòng)映射的。如下錯(cuò)誤示例,映射源有一個(gè)前綴s,映射目標(biāo)沒有,則無(wú)法進(jìn)行自動(dòng)映射。如下:

ASP.NET Core MVC 從入門到精通之自動(dòng)映射(二)

可以在映射匹配文件中,增加映射前綴RecognizePrefixes("s"),如下所示:

 1 namespace DemoCoreMVC.Profiles
 2 {
 3     public class AutomapProfile:Profile
 4     {
 5         public AutomapProfile()
 6         {
 7             RecognizePrefixes("s");
 8             SourceMemberNamingConvention = new LowerUnderscoreNamingConvention();
 9             DestinationMemberNamingConvention = new PascalCaseNamingConvention();
10             //創(chuàng)建映射關(guān)系
11             CreateMap<StudentViewModel, Student>();
12         }
13     }
14 }

經(jīng)過前綴設(shè)置后,則可以進(jìn)行自動(dòng)映射,如下所示:

ASP.NET Core MVC 從入門到精通之自動(dòng)映射(二)

關(guān)于映射匹配前綴后綴設(shè)置,有以下幾點(diǎn)需要注意:

  1. 一般前綴都是具有一定規(guī)律的設(shè)置,否則有些前綴a,有些前綴b,沒有一定的規(guī)律,則無(wú)法完全匹配。
  2. 后綴通過RecognizePostfixes("s");設(shè)置即可,功能測(cè)試與前綴一致。
  3. 取消前綴設(shè)置ClearPrefixes();就是取消所有的前綴設(shè)置列表中設(shè)置的前綴。Automapper默認(rèn)匹配了Get前綴,如果不需要可以清除。

映射控制(不常用)

使用ShouldMapField和ShouldMapProperty控制哪些屬性和字段能夠被映射

1 cfg.ShouldMapField = fi => false;
2 cfg.ShouldMapProperty = pi =>pi.GetMethod != null && (pi.GetMethod.IsPublic || pi.GetMethod.IsPrivate);

默認(rèn)所有public的field和property都會(huì)被map,也會(huì)map private 的setter,但是不會(huì)map整個(gè)property都是internal/private的屬性。

列表映射

在實(shí)際工作中,列表的應(yīng)用場(chǎng)景還是比較多的,列表映射也比較常用。如下所示:

1 [HttpPost]
2 public IActionResult Add(StudentViewModel studentViewModel)
3 {
4     var listStudents=new List<StudentViewModel>();
5     listStudents.Add(studentViewModel);
6     var students =  mapper.Map<List<StudentViewModel>,List< Student>>(listStudents);
7     studentService.Adds(students);
8     return View();
9 }

經(jīng)過測(cè)試發(fā)現(xiàn),只要映射了元素類型,列表可以自動(dòng)映射。如下所示:

ASP.NET Core MVC 從入門到精通之自動(dòng)映射(二)

?AutoMapper默認(rèn)會(huì)自動(dòng)映射以下類型:

  • IEnumerable
  • IEnumerable<T>
  • ICollection
  • ICollection<T>
  • IList
  • IList<T>
  • List<T>
  • Arrays

這幾個(gè)集合之間可以相互映射,如:mapper.Map<Source[], IEnumerable<Destination>>(sources);

手動(dòng)控制映射(不常用)

如果對(duì)于完全沒有任何規(guī)律的映射,如何進(jìn)行呢?如下兩個(gè)映射數(shù)據(jù)類型:
映射源類型:

 1 namespace DemoCoreMVC.ViewModels
 2 {
 3     public class UserViewModel
 4     {
 5         public int UserId { get; set; }
 6 
 7         public string UserName { get; set; }
 8 
 9         public string Mail { get; set; }
10     }
11 }

映射目標(biāo)類型:

 1 namespace DemoCoreMVC.Models
 2 {
 3     public class User
 4     {
 5         public int Id { get; set; }
 6 
 7         public string Name { get; set; }
 8 
 9         public string Email { get; set; }
10     }
11 }

需要手動(dòng)配置映射屬性列,如下所示:

 1 public class AutomapProfile:Profile
 2 {
 3     public AutomapProfile()
 4     {
 5         RecognizePrefixes("s");
 6         //RecognizePostfixes("s");
 7         SourceMemberNamingConvention = new LowerUnderscoreNamingConvention();
 8         DestinationMemberNamingConvention = new PascalCaseNamingConvention();
 9         //創(chuàng)建映射關(guān)系
10         CreateMap<StudentViewModel, Student>();
11         //ClearPrefixes();
12 
13         CreateMap<UserViewModel, User>()
14             .ForMember(dest => dest.Id, opt => opt.MapFrom(source => source.UserId))
15             .ForMember(dest => dest.Name, opt => opt.MapFrom(source => source.UserName))
16             .ForMember(dest => dest.Email, opt => opt.MapFrom(source => source.Mail));
17     }
18 }

映射示例

通過手動(dòng)配置映射列后,就可以實(shí)現(xiàn)自動(dòng)映射,如下所示:

1 public IActionResult Add(UserViewModel userViewModel)
2 {
3    
4     var user =  mapper.Map<UserViewModel,User>(userViewModel);
5     
6     return View();
7 }

手動(dòng)映射測(cè)試結(jié)果如下:

ASP.NET Core MVC 從入門到精通之自動(dòng)映射(二)

?注意:手動(dòng)映射主要適用于屬性完全不一致,沒有前綴,后綴,任何規(guī)律可言的屬性映射的情況,所以一般不太常用。

嵌套映射

對(duì)于復(fù)雜的嵌套類型,對(duì)象的屬性可能是一個(gè)復(fù)雜引用類型對(duì)象。

映射源,其中屬性User為類型為UserViewModel的引用類型。如下所示:

1 namespace DemoCoreMVC.ViewModels
2 {
3     public class EmployeeViewModel
4     {
5         public int Id { get; set; }
6 
7         public UserViewModel User { get; set; }
8     }
9 }

映射目標(biāo),其中屬性Uer為類型為User的引用類型。如下所示:

1 namespace DemoCoreMVC.Models
2 {
3     public class Employee
4     {
5         public int Id { get; set; }
6 
7         public User User { get; set; }
8     }
9 }

如果要對(duì)應(yīng)復(fù)雜的存在嵌套關(guān)系的對(duì)象進(jìn)行映射,則需要對(duì)屬性類型也進(jìn)行創(chuàng)建映射關(guān)系。如下所示:

1 CreateMap<UserViewModel, User>()
2     .ForMember(dest => dest.Id, opt => opt.MapFrom(source => source.UserId))
3     .ForMember(dest => dest.Name, opt => opt.MapFrom(source => source.UserName))
4     .ForMember(dest => dest.Email, opt => opt.MapFrom(source => source.Mail));
5 CreateMap<EmployeeViewModel,Employee>();

在控制器中調(diào)用,如下所示:

1 public IActionResult Add(UserViewModel userViewModel)
2 {
3     EmployeeViewModel employeeViewModel = new EmployeeViewModel() { Id = 1, User = userViewModel };
4     var employee = mapper.Map<EmployeeViewModel, Employee>(employeeViewModel);
5 
6     return View();
7 }

運(yùn)行測(cè)試,如下所示:

ASP.NET Core MVC 從入門到精通之自動(dòng)映射(二)

?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-471341.html

以上就是ASP.NET Core MVC從入門到精通之自動(dòng)映射的第二部分的全部?jī)?nèi)容。

大家也可以參考以下文章連接,講解的更加詳細(xì):https://blog.csdn.net/catshitone/article/details/109840926。

?

到了這里,關(guān)于ASP.NET Core MVC 從入門到精通之自動(dòng)映射(二)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • ASP.NET Core MVC 從入門到精通之Identity入門

    ASP.NET Core MVC 從入門到精通之Identity入門

    隨著技術(shù)的發(fā)展,ASP.NET Core MVC也推出了好長(zhǎng)時(shí)間,經(jīng)過不斷的版本更新迭代,已經(jīng)越來(lái)越完善,本系列文章主要講解ASP.NET Core MVC開發(fā)B/S系統(tǒng)過程中所涉及到的相關(guān)內(nèi)容,適用于初學(xué)者,在校畢業(yè)生,或其他想從事ASP.NET Core MVC 系統(tǒng)開發(fā)的人員。 經(jīng)過前幾篇文章的講解,初步

    2024年02月09日
    瀏覽(28)
  • ASP.NET Core MVC 從入門到精通之Filter

    ASP.NET Core MVC 從入門到精通之Filter

    隨著技術(shù)的發(fā)展,ASP.NET Core MVC也推出了好長(zhǎng)時(shí)間,經(jīng)過不斷的版本更新迭代,已經(jīng)越來(lái)越完善,本系列文章主要講解ASP.NET Core MVC開發(fā)B/S系統(tǒng)過程中所涉及到的相關(guān)內(nèi)容,適用于初學(xué)者,在校畢業(yè)生,或其他想從事ASP.NET Core MVC 系統(tǒng)開發(fā)的人員。 經(jīng)過前幾篇文章的講解,初步

    2024年02月09日
    瀏覽(24)
  • ASP.NET Core MVC 從入門到精通之日志管理

    ASP.NET Core MVC 從入門到精通之日志管理

    隨著技術(shù)的發(fā)展,ASP.NET Core MVC也推出了好長(zhǎng)時(shí)間,經(jīng)過不斷的版本更新迭代,已經(jīng)越來(lái)越完善,本系列文章主要講解ASP.NET Core MVC開發(fā)B/S系統(tǒng)過程中所涉及到的相關(guān)內(nèi)容,適用于初學(xué)者,在校畢業(yè)生,或其他想從事ASP.NET Core MVC 系統(tǒng)開發(fā)的人員。 經(jīng)過前幾篇文章的講解,初步

    2024年02月09日
    瀏覽(22)
  • ASP.NET Core MVC 從入門到精通之HttpContext

    ASP.NET Core MVC 從入門到精通之HttpContext

    隨著技術(shù)的發(fā)展,ASP.NET Core MVC也推出了好長(zhǎng)時(shí)間,經(jīng)過不斷的版本更新迭代,已經(jīng)越來(lái)越完善,本系列文章主要講解ASP.NET Core MVC開發(fā)B/S系統(tǒng)過程中所涉及到的相關(guān)內(nèi)容,適用于初學(xué)者,在校畢業(yè)生,或其他想從事ASP.NET Core MVC 系統(tǒng)開發(fā)的人員。 經(jīng)過前幾篇文章的講解,初步

    2024年02月02日
    瀏覽(23)
  • ASP.NET Core MVC 從入門到精通之文件上傳

    ASP.NET Core MVC 從入門到精通之文件上傳

    隨著技術(shù)的發(fā)展,ASP.NET Core MVC也推出了好長(zhǎng)時(shí)間,經(jīng)過不斷的版本更新迭代,已經(jīng)越來(lái)越完善,本系列文章主要講解ASP.NET Core MVC開發(fā)B/S系統(tǒng)過程中所涉及到的相關(guān)內(nèi)容,適用于初學(xué)者,在校畢業(yè)生,或其他想從事ASP.NET Core MVC 系統(tǒng)開發(fā)的人員。 經(jīng)過前幾篇文章的講解,初步

    2024年02月03日
    瀏覽(21)
  • ASP.NET Core MVC 從入門到精通之序列化

    ASP.NET Core MVC 從入門到精通之序列化

    隨著技術(shù)的發(fā)展,ASP.NET Core MVC也推出了好長(zhǎng)時(shí)間,經(jīng)過不斷的版本更新迭代,已經(jīng)越來(lái)越完善,本系列文章主要講解ASP.NET Core MVC開發(fā)B/S系統(tǒng)過程中所涉及到的相關(guān)內(nèi)容,適用于初學(xué)者,在校畢業(yè)生,或其他想從事ASP.NET Core MVC 系統(tǒng)開發(fā)的人員。 經(jīng)過前幾篇文章的講解,初步

    2024年02月03日
    瀏覽(31)
  • ASP.NET Core MVC 從入門到精通之Razor語(yǔ)法

    ASP.NET Core MVC 從入門到精通之Razor語(yǔ)法

    隨著技術(shù)的發(fā)展,ASP.NET Core MVC也推出了好長(zhǎng)時(shí)間,經(jīng)過不斷的版本更新迭代,已經(jīng)越來(lái)越完善,本系列文章主要講解ASP.NET Core MVC開發(fā)B/S系統(tǒng)過程中所涉及到的相關(guān)內(nèi)容,適用于初學(xué)者,在校畢業(yè)生,或其他想從事ASP.NET Core MVC 系統(tǒng)開發(fā)的人員。 經(jīng)過前幾篇文章的講解,初步

    2023年04月23日
    瀏覽(31)
  • ASP.NET Core MVC 從入門到精通之?dāng)?shù)據(jù)庫(kù)

    ASP.NET Core MVC 從入門到精通之?dāng)?shù)據(jù)庫(kù)

    隨著技術(shù)的發(fā)展,ASP.NET Core MVC也推出了好長(zhǎng)時(shí)間,經(jīng)過不斷的版本更新迭代,已經(jīng)越來(lái)越完善,本系列文章主要講解ASP.NET Core MVC開發(fā)B/S系統(tǒng)過程中所涉及到的相關(guān)內(nèi)容,適用于初學(xué)者,在校畢業(yè)生,或其他想從事ASP.NET Core MVC 系統(tǒng)開發(fā)的人員。 經(jīng)過前幾篇文章的講解,初步

    2023年04月27日
    瀏覽(25)
  • ASP.NET Core MVC 從入門到精通之接化發(fā)(二)

    ASP.NET Core MVC 從入門到精通之接化發(fā)(二)

    隨著技術(shù)的發(fā)展,ASP.NET Core MVC也推出了好長(zhǎng)時(shí)間,經(jīng)過不斷的版本更新迭代,已經(jīng)越來(lái)越完善,本系列文章主要講解ASP.NET Core MVC開發(fā)B/S系統(tǒng)過程中所涉及到的相關(guān)內(nèi)容,適用于初學(xué)者,在校畢業(yè)生,或其他想從事ASP.NET Core MVC 系統(tǒng)開發(fā)的人員。?經(jīng)過前兩篇文章的講解,初步

    2023年04月10日
    瀏覽(24)
  • ASP.NET Core MVC 從入門到精通之接化發(fā)(一)

    ASP.NET Core MVC 從入門到精通之接化發(fā)(一)

    隨著技術(shù)的發(fā)展,ASP.NET Core MVC也推出了好長(zhǎng)時(shí)間,經(jīng)過不斷的版本更新迭代,已經(jīng)越來(lái)越完善,本系列文章主要講解ASP.NET Core MVC開發(fā)B/S系統(tǒng)過程中所涉及到的相關(guān)內(nèi)容,適用于初學(xué)者,在校畢業(yè)生,或其他想從事ASP.NET Core MVC 系統(tǒng)開發(fā)的人員。 ? 經(jīng)過前一篇文章的講解,初

    2023年04月09日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包