OOM框架AutoMapper基本使用 1

2022-02-19 22:15:01 字數 2224 閱讀 6449

預備

首先我們預備一些viewmodel和tmodel。viewmodel就是你和使用者互動的實體。tmodel就是你與資料庫打交道的實體。

實體展示如下:

tmodel有如下三個簡單的實體,他們有獨立的實體,也有一對多的實體。

public class taddress

public string city

public string street

public string postcode

public string createtime

public int createuserid

}

public class tauthor

public string description

public listcontactinfo

} public class tcontactinfo

public string email

public string blog

public string twitter

}

viewmodel如下三個:

public class vm_address

public 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...