物件到物件的對映
mapto擴充套件方法
單元測試
介紹
對映乙個相似的物件到另乙個物件是常有的事情。因為兩個物件(類)有相似/相同的屬性,所以兩個相似物件之間相互對映是乏味、重複的。考慮乙個經典的應用服務方法如下:
publicclass
public
void
createuser(createuserinput input)
;_userrepository.insert(user);
}}
createuserinput是乙個簡單的dto,user是乙個簡單的實體。我們根據給定的input手動建立了乙個user實體。在實際的應用中,使用者實體會有許多的屬性,手動建立它變得乏味且容易出錯的。當我們想給user和createuserinput新增新屬性時,需要改變對映**。
publicclass
public
void
createuser(createuserinput input)
}
map是乙個簡單的方法,獲取源物件並使用宣告的泛型引數(本例中為user)建立乙個新目標物件。map方法有乙個過載,可以對映乙個物件到乙個已存在的物件。假定我們已經有了乙個user實體,想使用乙個物件更新它的屬性:
publicvoid
updateuser(updateuserinput input)
安裝
[dependson(typeofpublic
class
mymodule : abpmodule
了解關於對映的更多詳情。abp簡化了對映並且將它模組化了。
大多數時候,只想直接(慣例的)對映類。在這種情況下,可以使用automap、automapfrom和automapto特性。例如,在上面的例項中,我們想對映createuserinput類到user類,我們可以按如下所示使用automapto特性。
[automapto(typeof
(user))]
public
class
createuserinput
public
string surname
public
string emailaddress
public
string password
}
automap特性雙向對映兩個類。但是在這個例項中,我們僅僅需要從createuserinput類對映到user類,所以我們使用automapto。
假定我們對映時想忽略password,使用者用email屬性來標示email位址。我們可以按如下所示定義對映:
[dependson(typeofpublic
class
mymodule : abpmodule
); }
}
mapto擴充套件方法
publicclass
public
void
createuser(createuserinput input)
public
void
updateuser(updateuserinput input)
}
單元測試
我們希望使測試之間是獨立的。為了達到這個目的,我們應該按如下規則設計我們的工程:
localizablestring->string
返回主目錄
ABP官方文件翻譯 3 2 值物件
值物件 介紹 展現領域描述性層面且沒有概念性身份的物件稱之為值物件。eric evans 和實體相反,實體有身份標示 id 值物件沒有身份標示。如果兩個實體的身份標示是不同的,那麼就認為他們是不同的物件 實體,即使他們的所有屬性都是一樣的。考慮兩個不同的人有相同的名字 姓氏和年齡,但是他們是不同的人...
ABP官方文件翻譯 3 5 規約
規約 建立規範類 使用倉儲規約 組合規約 討論介紹 規約模式是一種特別的軟體設計模式,通過使用布林邏輯將業務規則鏈結起來重新調配業務規則。維基百科 尤其是,它通常用來為實體或其他業務物件定義可復用的過濾器。示例 在這個部分,我們將看到規約模式的必要性。本部分是通用的,和abp的實現沒有必然的關係。假...
ABP文件翻譯 值物件
本人是abp初學者,在看英文文件和 tkb至簡 的abp框架理論研究總結 典藏版 時,發現大神 tkb至簡中少了對value objects的翻譯,看文件是新的,大神沒時間把,小弟給補充上。用於描述領域的某個方面而本身沒有概念標識的物件稱為 a value object eric evans 對於實...