讓AutoMapper在你的專案裡飛一會兒

2021-08-21 17:21:06 字數 2050 閱讀 3037

dto是個什麼東東?

dto(data transfer object)就是資料傳輸物件,說白了就是乙個物件,只不過裡邊全是資料而已。

為什麼要用dto?

1、dto更注重資料,對領域物件進行合理封裝,從而不會將領域物件的行為過分暴露給表現層

2、dto是面向ui的需求而設計的,而領域模型是面向業務而設計的。因此dto更適合於和表現層的互動,通過dto我們實現了表現層與領域model之間的解耦,因此改動領域model不會影響ui層

3、dto說白了就是資料而已,不包含任何的業務邏輯,屬於**型的物件,使用時可以根據不同的ui需求進行靈活的運用

現在我們既然知道了使用dto的好處,那麼我們肯定也想馬上使用它,但是這裡會牽扯乙個問題:怎樣實現dto和領域model之間的轉換?

栗子1(兩個型別之間的對映)

(); addressdto dto = new addressdto

;(dto);

栗子2(兩個對映的物件有部分欄位名稱不一樣)

addressdtoaddress的對映,addressdto的字段countryname要對應address的字段country

(). formember(d => d.country, opt => opt.mapfrom(s => s.countryname));

栗子3(列表型別之間的對映)

源型別list,目標型別list

.createmap

< address, addressdto >();

.map

, list< addressdto >>( addresslist);

栗子4(對映在增改查中的應用)

public

class productbll

public productdto createproduct(productdto productdto)

public listgetproduct()

);return arr;

}public productdto modifyproduct(productdto productdto)

}

using system.collections;

using system.collections.generic;

using system.data;

namespace infrastructure.utility

////// 集合列表型別對映

///public

static listmaptolist(this ienumerable source)

}///

/// 集合列表型別對映

///public

static listmaptolist(this ienumerablesource)

////// 型別對映

///public

static tdestination mapto(this tsource source, tdestination destination)

where tsource : class

where tdestination : class

////// datareader對映

///public

static ienumerabledatareadermapto(this idatareader reader)

}}

你可以像下面的栗子這樣使用:

//物件對映

shipinfomodel shipinfomodel = shipinfo.mapto();

//列表對映

list shipinfomodellist = shipinfolist.maptolist();

讓AutoMapper在你的專案裡飛一會兒

dto是個什麼東東?dto data transfer object 就是資料傳輸物件,說白了就是乙個物件,只不過裡邊全是資料而已。為什麼要用dto?1 dto更注重資料,對領域物件進行合理封裝,從而不會將領域物件的行為過分暴露給表現層 2 dto是面向ui的需求而設計的,而領域模型是面向業務而設計...

讓AutoMapper更好用

public class person public string age public class persondto public string age 按照官方使用方式,我們需要以下幾個步驟 配置對映 o.createmap o.createmap var p new person 進行轉換 ...

讓我留在你身邊

我從來不說話 因為我害怕 沒有人回答 我從來不掙扎 因為我知道 這世界太大 太多時間浪費 太多事要面對 太多已無所謂 太多難辨真偽 太多紛擾是非 在你身邊是誰 最渺小的我 有大大的夢 時間向前走一定只有路口沒有盡頭 紛紛擾擾這個世界 所有的了解 只要 讓我留在你身邊 最渺小的我 有大大的夢 我願意安...