1

AutoMapperを使用して、Asp.net で MVC を使用しています。

このコードからわかるように

 Event eventObj = Mapper.Map<EventEditViewModel, Event>(eventEditViewModel);

マップ EventEditViewModel を Event に変換しようとしています。

CandidateId を実際のエンティティに変換するには、サービス レイヤーを使用する必要があります。

AutoMapper でこれを行うことが可能かどうか、考えはありますか? セットアップ方法

public class Event() { public クラス候補 {get; 設定;} }

public class EventEditViewModel()
{
    public string CandidateId {get; set;}
}
4

3 に答える 3

3

AutoMapperを使用してサービスレイヤーからエンティティを取得することは避けてください。理想的には、特定のタイプのプロパティ間を直接マッピングするために使用する必要があります。

于 2012-10-09T14:12:17.610 に答える
1

これは便利な場合もありますが、サービス レイヤーでのみ Automapper を使用するようにしています (つまり、サービスへのすべての入力と出力は特別な入力モデルと出力モデルです)。

Mapper.CreateMap<int, Entity>().ConvertUsing( new RepoTypeConverter<Entity>() );

public class NullableRepoTypeConverter<T> : ITypeConverter<int, T>
{
    public T Convert( ResolutionContext context )
    {
        int? src = (int?)context.SourceValue;
        if (src != null && src.HasValue) {
            return Repository.Load<T>( src.Value );
        } else {
            return default(T);
        }
    }

    // Get Repository somehow (like injection)
    private IRepository repository;
    public IRepository Repository
    {
        get
        {
            if (repository == null) {
                repository = KernelContainer.Kernel.Get<IRepository>();
            }
            return repository;
        }
    }
}
于 2012-10-10T01:15:41.333 に答える
1

次のように、最初にマップを作成する必要があると思います。

Mapper.CreateMap<EventEditViewModel, Event>();

使用する前に。

于 2012-10-09T14:07:06.220 に答える