2012-02-16 3 views
0

何か方法がありますか? ApplyCurrentValuesメソッドによってプロパティが適用されないように、私が気づいていない属性かもしれません。私の現在のケースでは、MVC3アプリケーションでMemberエンティティとEditビューを使用しており、CreateDateなどのプロパティはEditアクションによって変更されません。私はMapToEntityメソッドを持つEditアクションのために使用されるビューモデルMemberDetailModelを持っていますが、このメソッドは次のAutoMapper呼び出しを使用して新しいエンティティを返します。ApplyCurrentValuesによって特定のプロパティが適用されないようにする方法はありますか?

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

私は今物事を見るように、私は私自身の中でMapToEntityによって返さEMオブジェクト間で、いずれかのビューモデルから新しいEMオブジェクトに、いくつかの反射や反復プロパティの割り当てを使用して、まだApplyCurrentValuesを使用する必要があります更新メソッド、例えばApplyCurrentValuesWithExceptions

答えて

2

ApplyCurrentValues =分離されたエンティティから添付エンティティにすべての値(ナビゲーションプロパティを除く)を適用します。値のサブセットのみを適用することはできません。

最も簡単な方法は、エンティティの添付インスタンスを受け取ってビューモデルからフィーチャを1つずつ(または何らかのオートメーションを使用して)エンティティにコピーする特定のMapToEntityメソッドを作成するだけです。 AutoMapperを使用してデタッチされたインスタンスを作成することは、ビューモデル、分離されたエンティティインスタンス、および添付されたエンティティインスタンスを持つ必要がないため、冗長です。このアプローチをAutoMapperで使用することは、エンティティが接続されておらず、ビューモデルをコンテキストに添付されるエンティティに変換したい場合に意味があります。

+0

ええ、ありがとう、それは明示的な方法のように見える最も単純な方法です。私は常に私のビューモデルの基本クラスから 'MapToEntity'を持っていますが、特別な場合にはそれを無視することは簡単です。 – ProfK

関連する問題