0

ネストされたコレクションとそれに応じたモデルを持つエンティティがあります。まあ言ってみれば:

class Entity
{
    public IList<NestedEntity> Nested { get; set; }
}

class Model
{
    public IList<NestedModel> Nested { get; set; }
}

次のようなものが必要です。

var existingEntity = service.GetEntity(id);
Mapper.Map<Model, Entity>(model, existingEntity);
// now existingEntity is an updated entity and we can save it
service.SaveEntity(existingEntity);

そのため、ネストされたコレクション マッパーをマッピングしている間、既存のエンティティに存在しないアイテムを削除し、新しく作成されたアイテムを追加して、他のアイテムを更新する必要があります。
このような動作に到達するには、AutoMapper をどのように構成すればよいですか?
カスタムValueResolversResolveCoreメソッドにはターゲット クラス パラメーターがないため、コレクションを作成することはできますが、コレクション を更新することはできません。

4

1 に答える 1

0

モデル - >エンティティマッピングのソリューションは次のとおりです。

Mapper.CreateMap<NestedModel, NestedEntity>();
Mapper.CreateMap<Model, Entity>()
      .ForMember(x => x.Nested, opt => opt.ResolveUsing<Resolver>());

public class Resolver : IValueResolver
{
    public ResolutionResult Resolve(ResolutionResult source)
    {
        var targetCollection = ((Entity) source.Context.DestinationValue).Nested;

        // TODO: Custom mapping here.

        return source.New(targetCollection, typeof(NestedEntity[]));
    }
}
于 2012-12-21T23:28:27.140 に答える