1

我使用AutoMapper在 Asp.net 中使用 MVC 。

从这段代码可以看出

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

我正在尝试将地图 EventEditViewModel 转换为事件。

我需要使用我的服务层将 CandidateId 转换为实际的实体。

知道是否可以在 AutoMapper 中执行此操作?如何设置它

公共类事件(){公共类候选人{get; 放;} }

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

3 回答 3

3

您应该避免使用 AutoMapper 从服务层检索实体。理想情况下,它应该用于直接映射给定类型的属性。

于 2012-10-09T14:12:17.610 回答
1

我认为您需要先创建一个地图,如下所示:

Mapper.CreateMap<EventEditViewModel, Event>();

在你使用它之前。

于 2012-10-09T14:07:06.220 回答
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 回答