Automapper 實現自動對映

2021-08-08 20:11:35 字數 1883 閱讀 1696

出於安全考慮,在後台與前台進行資料傳輸時,往往不會直接傳輸實體模型,而是使用dto(data transfer object 資料傳輸物件),這樣在後台往前臺傳遞資料時可以省略不必要的資訊,只保留必要的資訊,大大增強資料安全性。

下面給出兩個相互對應的關係模型user、userdto

public

class

user

[maxlength(namemaxlength)]

public

string name

[maxlength(passwordmaxlength)]

[datatype(datatype.password)]

public

string password

}public

class

userdto

[maxlength(passwordmaxlength)]

public

string password

}

這裡將id定義為自增長主鍵,在註冊頁面,這個id應不可見,這個時候使用dto的好處就體現出來了,這個時候,在存入資料庫時會涉及到userdtouser的型別轉換,按照之前的經驗,肯定可以按照下面這樣來寫:

user.name=userdto.name;

user.password=userdto.password;

這樣的轉換固然可以,但是如果乙個user物件足夠複雜,有十幾個甚至二十幾個屬性,這個時候這種寫法就會顯得十分笨拙。

首先安裝nuget包

在 tools - nuget package manage - package manage console 輸入

安裝相應的nuget包。

下面使用兩種不同的方法來進行單元測試

public

void

using_initlalize_test()

;user.name.shouldbe("niko");

user.password.shouldbe("1234");

user.id.tostring().shouldbe("0");

}public

void

;user.name.shouldbe("niko");

user.password.shouldbe("1234");

user.id.tostring().shouldbe("0");

}

這裡使用到 shouldly 斷言框架,具體用法參考官方文件。

寫完規則之後 通常會呼叫assertconfigurationisvalid方法,檢查規則是否完整

.assertconfigurationisvalid();

public

static

class

////// 集合到集合

//////

//////

public

static listmapto(this ienumerable obj )

}

使用上面的方法進行單元測試:

public

void

testme();

user user=dto.mapto();

user.name.shouldbe("niko");

user.password.shouldbe("1234");

user.id.tostring().shouldbe("0");

}

DDD領域模型AutoMapper實現DTO(七)

dto的應用場景 定義產品類 public class product public decimal productunitprice 定義productdto物件 public class productdto public decimal productunitprice 定義兩個類 publi...

安裝MVC專案時自動給IIS新增萬用字元對映

在iis6中安裝asp.net mvc專案時,需要將aspnet isapi.dll新增到 虛擬目錄的萬用字元對映當中,很多時候我們需要手動完成。這幾天弄了個asp.net mvc3的專案,寫完後做了乙個安裝部署程式,想安裝的時候能自動將aspnet isapi.dll新增到虛擬目錄的萬用字元對映當...

Thinkphp實現自動驗證和自動完成

thinkphp的自動驗證和自動完成都是根所表單提交的內容來的,對部分資料進行規則驗證和處理後插入到資料庫。1 自動驗證格式 array array 驗證欄位1,驗證規則,錯誤提示,驗證條件,附加規則,驗證時間 array 驗證欄位2,驗證規則,錯誤提示,驗證條件,附加規則,驗證時間 驗證條件 se...