是否有某种方式,例如也许是一个我不知道的属性,以防止ApplyCurrentValues
方法应用属性?在我目前适用的情况下,我在MVC3应用程序中使用Member
实体和Edit
视图,而CreateDate
等属性不会被Edit
更改行动。我有一个用于MemberDetailModel
操作的视图模型Edit
,它有一个MapToEntity
方法,但是此方法使用以下AutoMapper
调用返回一个新实体。 / p>
public virtual TEntity MapToEntity()
{
return (TEntity)Mapper.Map(this, GetType(), typeof(TEntity));
}
正如我现在看到的那样,我必须使用一些反射和迭代属性赋值,从视图模型到新的EM对象,并且仍在ApplyCurrentValues
返回的EM对象之间使用MapToEntity
在我自己的更新方法中,例如ApplyCurrentValuesWithExceptions
。
答案 0 :(得分:2)
ApplyCurrentValues
=将所有值(导航属性除外)从分离实体应用到附加实体。您不能仅应用值的子集。
最简单的方法是创建特定的MapToEntity
方法,该方法将接收实体的附加实例,并将视图模型中的字段逐个复制到实体(或使用某些自动化)。使用AutoMapper创建分离的实例是多余的,因为您不需要具有视图模型,分离的实体实例和附加的实体实例。如果您没有附加实体并且想要将视图模型转换为将附加到上下文的实体,则将此方法与AutoMapper一起使用是有意义的。