2012-02-16 104 views
0

有沒有某種方式,例如也許我不知道的一個屬性,以防止ApplyCurrentValues方法應用屬性?在我目前適用的情況下,我正在使用MVC3應用程序中的Member實體和Edit視圖,並且等屬性不會被Edit操作更改。我有一個視圖模型MemberDetailModel用於Edit操作,它有一個MapToEntity方法,但此方法使用以下AutoMapper調用返回一個新實體。有沒有辦法阻止ApplyCurrentValues應用某些屬性?

public virtual TEntity MapToEntity() 
{ 
    return (TEntity)Mapper.Map(this, GetType(), typeof(TEntity)); 
} 

正如我現在所看到的東西,我必須使用一些思考和反覆的財產分配,無論是從視圖模型到一個新的EM對象,並仍然使用ApplyCurrentValues,通過MapToEntity在自己返回的EM對象之間更新方法,例如ApplyCurrentValuesWithExceptions

回答

2

ApplyCurrentValues =將分離實體的所有值(導航屬性除外)應用於附屬實體。您不能僅應用值的子集。

最簡單的方法是創建特定的MapToEntity方法,該方法將接收實體的附加實例,並將視圖模型中的字段逐個(或自動化)複製到實體。使用AutoMapper創建分離的實例是多餘的,因爲您不需要有視圖模型,分離的實體實例和附加的實體實例。如果您沒有附加實體並且您想要將視圖模型轉換爲將附加到上下文的實體,則在AutoMapper中使用此方法是有意義的。

+0

是的,謝謝,它看起來像一個明確的方法是最簡單的方法。我總是從我的視圖模型基類中擁有'MapToEntity',但在特殊情況下可以輕鬆忽略它。 – ProfK 2012-02-16 15:22:49

相關問題