出於安全考慮,在後台與前台進行資料傳輸時,往往不會直接傳輸實體模型,而是使用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的好處就體現出來了,這個時候,在存入資料庫時會涉及到userdto
往user
的型別轉換,按照之前的經驗,肯定可以按照下面這樣來寫:
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...