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

时间:2012-02-16 11:25:35

标签: .net entity-framework entity-framework-4

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

1 个答案:

答案 0 :(得分:2)

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

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