使用AutoMapper進行物件間對映

2022-01-12 08:20:58 字數 1685 閱讀 9740

在開發過程中,難免遇到下面這種情況:兩個(或多個)物件所擁有的大多數屬性是重複的,我們需要在物件間進行對映(即將乙個物件的屬性值賦給另乙個物件。通常我們可以進行如下操作:

1 a a=new

a();

2 a.name=b.name;

3 a.age=b.age;

但若物件擁有較多屬性,採用著用方法將會顯得十分繁瑣。那麼有沒有一些框架可以幫助我們完成這個過程呢?答案是肯定的。

1. 一對一對映

class

human

public

int age

public

string country

}class

monkey

public

int age

}

現在我們進行huamn例項和monkey例項間的對映:

monkey monkey = new monkey() ;

////

我們可以根據實際需要來進行初始化,monkey類沒有country屬性

//這裡我們給human物件的country屬性指定乙個值

.formember(h => h.country, mce => mce.usevalue("

china"))

);console.writeline(

"姓名:,國籍:

", human.name, human.country);

程式執行結果:

可以看到,我們已經成功的將monkey物件的屬性值對映到了human上。

2. 多對多對映

向對於一對一的對映而言,多對多的對映略顯複雜。這裡通過乙個自定義類來封裝具體的對映過程,**如下:

static

class

if (results.count > 0

)

}return

null

; }

public

}

執行對映:

1 monkey monkeys =2,

4new monkey() ,

5new monkey() ,

6new monkey() 7};

81011foreach (var h in

humans)

12

程式執行結果:

這裡雖然成功實現了對映,但無法給某個具體的human物件的country屬性賦值,若讀者有更好的實現多對多對映的方式,望告知小編。

3. 多對一對映

1 monkey monkey1 = new monkey() ;

45 monkey monkey2 = new monkey() ;

7 .formember(h => h.name, mc =>mc.usevalue(human.name))8);

1011 console.writeline("

姓名:,年齡:

", human.name, human.age);

程式執行結果:

這裡小編僅僅實現了二對一的對映,至於n對一的對映,小編未找到好的解決方案,若讀者有好的解決方案,望告知小編,小編不勝感激。

AutoMapper 使用實踐

一.使用意圖 從我開發過程使用到一些場景 實體 實體 集合 集合 實體欄位名稱不同 實體資料型別不同 相同名稱,相同資料型別無需配置 三.最佳實踐 專案結構 每個專案用途,解決方案資料夾基本標示清楚。2.以訂單為例 不是真實業務,只是舉個簡單的例子 在models 實體類庫 新增ordermodel...

AutoMapper使用筆記

主要用途 領域物件與dto之間的轉換 資料庫查詢結果對映至實體物件。使用筆記 場景1 源型別blogentry,目標型別blogpostdto,指定屬性進行對映 blogentry.id對應於blogpostdto.postid formember dto dto.postid,opt opt.ma...

AutoMapper使用筆記

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!主要用途 領域物件與dto之間的轉換 資料庫查詢結果對映至實體物件。使用筆記 場景1 源型別blogentry,目標型別blogpostdto,指定屬性進行對映 blogentry.id對應於blogpostdto.postid 場景2 idata...