0

當前項目:ExpressMapper教程假設 - 我不知道從哪裏開始

  • ASP.NET 4.5.2
  • MVC 5
  • EF 6

在所有誠實,我以前從未使用過映射器,而當ExpressMapper tutorial在高空高光反射時,它對我沒有的知識做出了幾個假設。

所以沒有一般​​順序爲:

產品都應該有它的所有代碼在一個地方集中。這個地方在哪裏?我在哪裏放?這些例子在開始時,

public void MappingRegistration() { 
    Mapper.Register<Product,ProductViewModel>(); 
} 

但我不知道在哪裏把這個。它是進入它自己的文件還是在另一個文件中,比如在App_Start中?

如果它在項目中的其他地方,我是否在它自己的命名空間下創建它?

如果我有一個viewModel以不同的方式填充dataModel填充,我該如何分別處理每種類型?如在數據中,數據從數據庫中提取出來,並用完全不同的條件規則填充viewModel,而不是如何從viewModel中提取數據並插入或更新回數據庫。

如何引入影響如何將數據和哪些數據插入數據庫的外部條件,如用戶的角色,他們的用戶ID和用戶名以及各種項目設置?根據條件,一些條目可能會以空值而不是實際值結束。我該如何使用這些條件來進行業務邏輯驗證(用戶實際上是通過比較他們的會話UserId和存儲在DB中的UserId來更新他自己的記錄)?

現在我做了很多的模型手動映射,但是這是有問題特別是因爲我使用(以減少在控制器代碼)的方法是指在更新過程中,我不能檢查的條目DB之前在數據庫中更新它。

回答

2

你可以將它粘在任何你想要的東西上 - 唯一需要的是它在代碼中被調用,然後再調用Mapper.Map<Product,ProductViewModel>

E.g.

Mapper.Register<Product, ProductViewModel>() 
    .Member(dest => dest.efgh, src => src.abcd); 

如果要應用特殊的轉換規則,你可以指定一個Function映射 - 例如要在ProductViewModel價格要2個產品的價格:

Mapper.Register<Product, ProductViewModel>() 
    .Function(dest => dest.Price, src => src.Price*2); 

您對映射任何自定義應在時間內完成您註冊的映射,並具有對會員進行按會員計算AFAIK。

如果還有其他需要幫助的具體內容,請發表評論。