我使用AutoMapper在Asp.net中使用MVC。
从这段代码中可以看出
Event eventObj = Mapper.Map<EventEditViewModel, Event>(eventEditViewModel);
我正在尝试将地图EventEditViewModel转换为Event。
我需要使用我的服务层将CandidateId转换为实际的实体。
是否有可能在AutoMapper中执行此操作?如何设置
公共类Event() { 公共班候选人{get;组;} }
public class EventEditViewModel()
{
public string CandidateId {get; set;}
}
答案 0 :(得分:3)
您应该避免使用AutoMapper从服务层检索实体。理想情况下,它应该用于直接映射给定类型的属性。
答案 1 :(得分:1)
我认为你需要先创建一个地图,如下所示:
Mapper.CreateMap<EventEditViewModel, Event>();
使用之前。
答案 2 :(得分: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;
}
}
}