Automapper IValueResolver不支持Nullable类型的Guid

时间:2017-01-11 22:26:29

标签: c# mapping automapper automapper-5

最近我更新了automapper 5+版本,并意识到IValueresolver对于Nullable类型的Guid没有按预期工作。

我创建了一个值解析器,如下所示:

public class GanttTaskParentIdResolver : IValueResolver<GanttTask, Task, Guid?>
{
    private IUow Uow;
    public GanttTaskParentIdResolver(IUow _uow)
    {
        Uow = _uow;
    }
    public Guid? Resolve(GanttTask source, Task destination, Guid? member, ResolutionContext context)
    {
        if (source.parentIdRaw != null && source.parentIdRaw != 0)
        {
            var task = Uow.Tasks.GetAll().Where(con => con.Id == source.parentIdRaw).FirstOrDefault();
            return task.GUID;
        }
        else return null;
    }

}

和映射配置如下:

cfg.CreateMap<GanttTask, Task>()
              .IgnoreAllNonExisting()
              .ForMember(dst => dst.Children, opt => opt.MapFrom(s => s.Children))
              .ForMember(dst => dst.ParentId, opt => opt.ResolveUsing<GanttTaskParentIdResolver>())
              .ForMember(dst => dst.CalendarId, opt => opt.ResolveUsing<GanttTaskCalendarIdResolver>());

dst.ParentId是Nullable Guid。 它不会触发GanttTaskParentIdResolver进行解析,并且总是为ParentId提供null。

任何人都遇到过同样的问题吗?

更新 - 我测试了nullable int并且它有效。这似乎是可以为空的Guid的问题

0 个答案:

没有答案