簡體   English   中英

將DTO映射到實體

[英]Mapping DTO to Entity

我正在嘗試將DTO映射到實體。 當我在網上搜索時,我注意到很多對AutoMapper的引用,以及關於它不是一個好方法的反饋。

此外,我找不到任何新的日期來源,一個抱怨沒有“新”來源的問題是4歲。

我找到的其中一個看起來非常有前途的來源是https://rogerjohansson.blog/2013/12/01/why-mapping-dtos-to-entities-using-automapper-and-entityframework-is-horrible/

我也無法讓它發揮作用。

所以,基本情況就是這樣。

我正在嘗試使用wcf對訂單進行集成。 (另一個案例)

我有一個訂單dto和相關的dto是訂單,客戶,客戶地址或者deradress。 稍后會有更多內容。

由於這些主要是數據庫表,因此主“表”是Order。 它充當標題,訂單和其他自我解釋。 我相信每個人之前都會遇到這樣的事情。

我根據他們的對手實體創建了Dto。

我被告知要做的是;

a)轉換(或術語,映射?)這些DTO到實體

b)將實體添加到dbcontext和savechanges。

那么,有人能指出我在解決這種情況方面的良好方向嗎?

我們有一個類似的項目。 我們使用MVC中的Model類而不是WCF,但最終是同一個想法:從一個對象轉換為另一個對象。 我不能不同意AutoMapper的更多信息。 起初,我們對它的效率有同樣的懷疑,但最后我們決定嘗試一下。 然后,我們遇到了文章指出的一些問題(特別是元素集合)。 幸運的是,AutoMapper為您提供了足夠的靈活性來處理這些特殊的映射條件。

  • 對於集合,我們使用自定義映射,這允許我們檢測何時有新元素/元素要更新/要刪除的元素
  • 對於引用,我們遵循實體框架的規則:添加FK_Id值而不是真實對象。
  • 如果由於某種原因,你需要在映射上添加一些邏輯,基於一些引用實體,那么我們使用dependencyResolver(僅在極端情況下,因為我們不喜歡dependencyResolver的想法)

我認為AutoMapper很容易學習基礎知識,因此您可以在幾分鍾內映射您的對象。 此外,它還為您提供了所有特殊考慮因素的工具。

您發布的文章解釋了“實體框架不喜歡AutoMapper”,但它更多地與您如何遵循EF和AutoMapper的規則相關。 實體框架是一個巨大的ORM,因此,您需要遵循一些規則(在某些情況下非常嚴格的規則)。 當然,使用帶有基本示例的AutoMapper會破壞一些規則,但是一旦開始習慣它,就很容易遵循規則。

總結一下:AutoMapper為您節省了大量時間,您可以投資定制一些配置。 如果沒有,你將不得不使用linq投影,這在大多數情況下將花費你更多的時間。 例如:通過檢測基於Ids的添加/編輯/刪除來解決收集問題,也可以通過自定義映射器使用AutoMapper進行處理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM