成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

OOM框架AutoMapper怎么用-創(chuàng)新互聯(lián)

小編給大家分享一下OOM框架AutoMapper怎么用,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站制作、網(wǎng)站建設(shè)、遂寧網(wǎng)絡(luò)推廣、小程序制作、遂寧網(wǎng)絡(luò)營銷、遂寧企業(yè)策劃、遂寧品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們大的嘉獎(jiǎng);創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供遂寧建站搭建服務(wù),24小時(shí)服務(wù)熱線:18980820575,官方網(wǎng)址:jinyejixie.com

預(yù)備

首先我們預(yù)備一些ViewModel和TModel。ViewModel就是你和用戶交互的實(shí)體。TModel就是你與數(shù)據(jù)庫打交道的實(shí)體。

實(shí)體展示如下:

TModel有如下三個(gè)簡單的實(shí)體,他們有獨(dú)立的實(shí)體,也有一對(duì)多的實(shí)體。

public class TAddress
{
 public string Country { get; set; }
 public string City { get; set; }
 public string Street { get; set; }
 public string PostCode { get; set; }
 public string CreateTime { get; set; }
 public int CreateUserId { get; set; }
}
public class TAuthor
 {
  public string Name { get; set; }
  public string Description { get; set; }
  public List<TContactInfo> ContactInfo { get; set; }
 }
 public class TContactInfo
 {
 public int Id { get; set; }
 public string Email { get; set; }
 public string Blog { get; set; }
 public string Twitter { get; set; }
 }

ViewModel如下三個(gè):

public class VM_Address
 {
 public string Country { get; set; }
 public string City { get; set; }
 public string City2 { get; set; }
 }
 public class VM_Author
 {
 public string Name { get; set; }
 public string Description { get; set; }
 public List<VM_ContactInfo> ContactInfo { get; set; }
 }
 public class VM_ContactInfo
 {
 public int Id { get; set; }
 public string Email { get; set; }
 public string Blog { get; set; }
 public string Twitter { get; set; }
 }

單個(gè)實(shí)體轉(zhuǎn)換

單個(gè)實(shí)體轉(zhuǎn)換的時(shí)候,在屬性字段名稱完全匹配的情況下,你只需指定兩個(gè)實(shí)體間的轉(zhuǎn)換規(guī)則,指定source源實(shí)體和destination目標(biāo)實(shí)體。那么你應(yīng)該參照如下實(shí)例:

VM_Address dto = new VM_Address
  {
  Country = "China",
  City = "Beijing"
  };
  Mapper.Initialize(m => m.CreateMap<VM_Address, TAddress>());
  TAddress address = Mapper.Map<VM_Address, TAddress>(dto);

請注意在AutoMapper5.x當(dāng)中,Initialize來初始化你的規(guī)則是選的。

在你指定轉(zhuǎn)換規(guī)則后,請使用Map方法,進(jìn)行轉(zhuǎn)換并輸出你的目標(biāo)實(shí)體。還有第一個(gè)參數(shù)代表SourceModel,第二個(gè)參數(shù)是DestinationModel.

單個(gè)實(shí)體不同名屬性轉(zhuǎn)換

當(dāng)你需要對(duì)不同名稱的字段來進(jìn)行映射的時(shí)候,請注意使用ForMember方法,第一個(gè)參數(shù)需要你制定所需特殊配置的目標(biāo)字段,第二個(gè)參數(shù)你則需要制定你對(duì)該字段屬性的操作,我選擇了它提供的MapFrom方法,意義在于告訴AutoMapper,我需要講目標(biāo)實(shí)體的City來源 指定為 源實(shí)體的City2屬性值。

VM_Address dto = new VM_Address
  {
  Country = "China",
  City2 = "Beijing"
  };
  Mapper.Initialize(m => m.CreateMap<VM_Address, TAddress>().ForMember(x => x.City, opt => opt.MapFrom(o => o.City2)));
  TAddress address = Mapper.Map<VM_Address, TAddress>(dto);

集合轉(zhuǎn)換

在集合間轉(zhuǎn)換的時(shí)候,你不需要配置目標(biāo)List與源List對(duì)象中的匹配,而只需要配置你泛型對(duì)象的映射匹配關(guān)系。

  TAddress address = new TAddress { Country = "China", City = "Beijing" };
  TAddress address2 = new TAddress() { Country = "USA", City = "New York" };
  List<TAddress> addressList = new List<TAddress>() { address2, address };
  Mapper.Initialize(m => m.CreateMap<TAddress, VM_Address>());//這里僅需配置實(shí)體間的轉(zhuǎn)換,而不是實(shí)體集合的轉(zhuǎn)換
  List<VM_Address> res = Mapper.Map<List<TAddress>, List<VM_Address>>(addressList);

實(shí)體包含不同類型屬性轉(zhuǎn)換(忽略屬性)

在實(shí)體包含不同類型屬性的時(shí)候,比如TModel1中包含了一個(gè)List<TModel>,而你的ViewModel1中包含了一個(gè)List<ViewModel>.這個(gè)時(shí)候你可以選擇忽略這個(gè)屬性

 var contacts = new List<TContactInfo>() { new TContactInfo() 
          { Blog = "myblog", Email = "ws@qq.com" }, new TContactInfo() { Blog = "myblog", Email = "ll@qq.com" } };
  TAuthor author = new TAuthor() { Description = "描述", Name = "吳雙", ContactInfo = contacts };
  Mapper.Initialize(m => { m.CreateMap<TAuthor, VM_Author>().ForMember(x => x.ContactInfo, opt => opt.Ignore()); });
       VM_Author dto = Mapper.Map<TAuthor, VM_Author>(author);
//這里的Ignore代表配置ContractInfo該屬性的操作 為 忽略Ignore,映射時(shí)將忽略該屬性 由于List<TContactInfo>()和List<VM_ContactInfo>() 是不同類型,所以需要配置忽略或者是特殊映射,特殊映射例子看下方

實(shí)體包含不同類型屬性轉(zhuǎn)換(指定屬性Mapfrom)

當(dāng)然你需要這個(gè)屬性的時(shí)候,你可以不忽略他,而是使用MapFrom來進(jìn)行特殊的指定,并且在類型不相同的時(shí)候,你要指定你兩個(gè)類型間的映射匹配關(guān)系。正如下面實(shí)例中的

m.CreateMap<TContactInfo, VM_ContactInfo>();和
m.CreateMap<TAuthor, VM_Author>().ForMember(x => x.ContactInfo, opt => opt.MapFrom(o => o.ContactInfo));

var contacts = new List<TContactInfo>()
  {
  new TContactInfo() { Blog = "myblog", Email = "ws@qq.com" },
  new TContactInfo() { Blog = "myblog", Email = "ll@qq.com" }
  };
  TAuthor author = new TAuthor() { Description = "描述", Name = "吳雙", ContactInfo = contacts };
  Mapper.Initialize(m =>
  {
  m.CreateMap<TContactInfo, VM_ContactInfo>();//注意 內(nèi)部不同類型實(shí)體轉(zhuǎn)換時(shí)必要的
  m.CreateMap<TAuthor, VM_Author>().ForMember(x => x.ContactInfo, opt => opt.MapFrom(o => o.ContactInfo));//注意 制定MapFrom是必要的
  });
  VM_Author dto = Mapper.Map<TAuthor, VM_Author>(author);

看完了這篇文章,相信你對(duì)“OOM框架AutoMapper怎么用”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊頻道,感謝各位的閱讀!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

分享文章:OOM框架AutoMapper怎么用-創(chuàng)新互聯(lián)
分享URL:http://jinyejixie.com/article42/dejjhc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、域名注冊標(biāo)簽優(yōu)化、虛擬主機(jī)、關(guān)鍵詞優(yōu)化、網(wǎng)站排名

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)
松桃| 临颍县| 英德市| 诸暨市| 武汉市| 黄冈市| 波密县| 洛隆县| 璧山县| 贺兰县| 蒲江县| 永丰县| 安西县| 九龙坡区| 黎川县| 台东县| 禹州市| 林甸县| 阿鲁科尔沁旗| 根河市| 澄迈县| 桦甸市| 昌都县| 英吉沙县| 茶陵县| 松潘县| 吉隆县| 黑水县| 天门市| 竹溪县| 汉寿县| 溧水县| 平罗县| 正安县| 靖江市| 新疆| 荆州市| 黑河市| 喀什市| 赤水市| 宁晋县|