預備
首先我們預備一些viewmodel和tmodel。viewmodel就是你和使用者互動的實體。tmodel就是你與資料庫打交道的實體。
實體展示如下:
tmodel有如下三個簡單的實體,他們有獨立的實體,也有一對多的實體。
public class taddresspublic string city
public string street
public string postcode
public string createtime
public int createuserid
}
public class tauthorpublic string description
public listcontactinfo
} public class tcontactinfo
public string email
public string blog
public string twitter
}
viewmodel如下三個:
public class vm_addresspublic string city
public string city2
} public class vm_author
public string description
public listcontactinfo
} public class vm_contactinfo
public string email
public string blog
public string twitter
}
單個實體轉換
單個實體轉換的時候,在屬性欄位名稱完全匹配的情況下,你只需指定兩個實體間的轉換規則,指定source源實體和destination目標實體。那麼你應該參照如下例項:
vm_address dto = new vm_address;
在你指定轉換規則後,請使用map方法,進行轉換並輸出你的目標實體。還有第乙個引數代表sourcemodel,第二個引數是destinationmodel.
單個實體不同名屬性轉換
vm_address dto = new vm_address;
集合轉換
在集合間轉換的時候,你不需要配置目標list與源list物件中的匹配,而只需要配置你泛型物件的對映匹配關係。
taddress address = new taddress ;taddress address2 = new taddress() ;
listaddresslist = new list() ;
實體包含不同型別屬性轉換(忽略屬性)
在實體包含不同型別屬性的時候,比如tmodel1中包含了乙個list,而你的viewmodel1中包含了乙個list.這個時候你可以選擇忽略這個屬性
var contacts = new list() , new tcontactinfo() };
tauthor author = new tauthor() ;
//這裡的ignore代表配置contractinfo該屬性的操作 為 忽略ignore,對映時將忽略該屬性 由於list()和list() 是不同型別,所以需要配置忽略或者是特殊對映,特殊對映例子看下方
實體包含不同型別屬性轉換(指定屬性mapfrom)
當然你需要這個屬性的時候,你可以不忽略他,而是使用mapfrom來進行特殊的指定,並且在型別不相同的時候,你要指定你兩個型別間的對映匹配關係。正如下面例項中的
m.createmap();和
m.createmap().formember(x => x.contactinfo, opt => opt.mapfrom(o => o.contactinfo));
var contacts = new list()
, new tcontactinfo()
};tauthor author = new tauthor() ;
);
AutoMapper 使用實踐
一.使用意圖 從我開發過程使用到一些場景 實體 實體 集合 集合 實體欄位名稱不同 實體資料型別不同 相同名稱,相同資料型別無需配置 三.最佳實踐 專案結構 每個專案用途,解決方案資料夾基本標示清楚。2.以訂單為例 不是真實業務,只是舉個簡單的例子 在models 實體類庫 新增ordermodel...
框架學習四 1 處理OOM之LazyList
一 簡介 優點 簡潔,用起來方便。缺點 貌似不更新了。也不算缺點。二 位址和支援的版本 支援版本 2.0 三 用法 定義乙個imageloader例項,然後呼叫其displayimage 即可,最後記得清除快取。imageloader imageloader new imageloader cont...
如何避免OOM
2.便面列舉的使用,可以用靜態常量或者註解 intdef替代 3.bitmap優化 a.尺寸壓縮 通過insamplesize設定合適的縮放 b.顏色質量 設定合適的format,argb 6666 rbg 545 argb 4444 alpha 6,存在很大差異 c.inbitmap 使用inbi...