2016-04-18 115 views
0

我正在開發一個新項目,並希望使用MVC和實體框架。爲了分離關注的目的。我打算組織我的項目,像這樣..實體對象到業務對象

  • MyProject.Web(本項目設有MVC的V和C)
  • MyProject.Model(本項目設有MVC中的M個,以便它可以被重用(這是我寫業務邏輯並通過接口提供的地方)
  • MyProject.Entity(這是我的DAL - 其中實體對象將由嚮導使用db第一種方法生成)

我的問題是什麼是在我的BLL中將實體對象轉換爲業務對象的最佳方式?我的映射要求我加入兩個表並計算一個映射到業務對象中的字段的總和。

不知道這是一個很好的例子,但讓我說我加入了客戶表和訂單表,併爲同一個客戶取回了兩個記錄。一個用於安置在AM中的訂單,另一個用於安排在PM中的訂單。我需要計算當天的總數並將其映射到業務對象中的字段。

Automapper浮現在腦海中,而不是手動編碼DTO,但我不確定它是否可以執行復雜的映射(和計算)?

有沒有辦法在EF 6中手動配置自定義地圖來做到這一點?

回答

0

使用Automapper,可以使用Projections進行復雜映射或使用AutoMapper的QueryableExtensions輔助方法。

請參閱以下鏈接中的聚合部分。

LINQ可以支持聚合查詢,並AutoMapper支持LINQ 擴展方法

https://github.com/AutoMapper/AutoMapper/wiki/Queryable-Extensions

+0

謝謝!讓我試試看。我會回來發佈更新。 – NKD

+0

所以我在看automapper和一個燈泡上升。而不是使用automapper。我只是爲我的實體對象創建一個擴展,以返回子記錄的總和,因爲所有實體對象都是部分類。不知道這是做到這一點的正確方法,但它解決了問題。我會將你的回答標記爲答案,因爲它實際上回答了我的問題,即automapper是否可以進行聚合。謝謝! – NKD

+0

@NKD它絕對是一個可靠的選擇。通常有多種方式來做事。 –