有没有办法阻止ApplyCurrentValues应用某些属性?

问题描述:

有没有某种方式,例如也许我不知道的一个属性,以防止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

ApplyCurrentValues =将分离实体的所有值(导航属性除外)应用于附属实体。您不能仅应用值的子集。

最简单的方法是创建特定的MapToEntity方法,该方法将接收实体的附加实例,并将视图模型中的字段逐个(或自动化)复制到实体。使用AutoMapper创建分离的实例是多余的,因为您不需要有视图模型,分离的实体实例和附加的实体实例。如果您没有附加实体并且您想要将视图模型转换为将附加到上下文的实体,则在AutoMapper中使用此方法是有意义的。

+0

是的,谢谢,它看起来像一个明确的方法是最简单的方法。我总是从我的视图模型基类中拥有'MapToEntity',但在特殊情况下可以轻松忽略它。 – ProfK 2012-02-16 15:22:49