1

我正在使用 Automapper 进行以下操作,但由于客户端的联系人表中没有记录,我得到的对象引用未设置为对象的实例。错误。

存在联系人集合,但 Contacts.ContactEmails 集合为空。

处理这个问题的最佳方法是什么?

Mapper.CreateMap<Client, ClientGrid>()
..ForMember(to => to.OfficeEmail, opt => opt.MapFrom(from => from.Contacts == null ? "" : from.Contacts.SingleOrDefault().ContactEmails.FirstOrDefault().Email));
4

2 回答 2

1

您能否修改 Contact 类以具有一个 get 属性,该属性将返回第一个 ContactEmail(如果可用),否则返回 null?然后,您可以改为映射到该属性。

于 2012-05-03T17:45:48.193 回答
1

我曾经.ConvertUsing<MyTypeConverter>()解决过这个问题:

Mapper.CreateMap<Client, ClientGrid>()
    .ConvertUsing<ClientToClientGridConverter>();


class ClientToClientGridConverter
    : AutoMapper.ITypeConverter<Client, ClientGrid>
{
    public ClientGrid Convert(AutoMapper.ResolutionContext context)
    {
        if (context == null || context.IsSourceValueNull) 
        { 
            return null;
        }

        var client = context.SourceValue as Client;

        var clientGrid = new ClientGrid();

        // conversion rules and logic here

        return clientGrid 
    }
}
于 2016-01-29T17:39:25.043 回答