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(兩個對映的物件有部分欄位名稱不一樣)
addressdto
到address
的對映,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 進行轉換 ...
讓我留在你身邊
我從來不說話 因為我害怕 沒有人回答 我從來不掙扎 因為我知道 這世界太大 太多時間浪費 太多事要面對 太多已無所謂 太多難辨真偽 太多紛擾是非 在你身邊是誰 最渺小的我 有大大的夢 時間向前走一定只有路口沒有盡頭 紛紛擾擾這個世界 所有的了解 只要 讓我留在你身邊 最渺小的我 有大大的夢 我願意安...