1

我正在尝试使用 AutoMapper 进行映射。
源对象是 C# 对象

public class Source
    {
        public string comment { get; set; }
        public string Subject { get; set; }
        public Account Account{ get; set; }        
    }

public class Account
        {
            public string FirstName{ get; set; }
            public string LastName{ get; set; }
        }

我的目的地是一个名为 crm_destination 的 CRM 实体,它具有诸如评论、主题之类的字段,但它也具有类型为Account的LookUp 字段帐户。

但我不知道如何映射 LookUp 字段。

以下是我的自动映射器

AutoMapper.Mapper.CreateMap<Source, Destinaetion>()
               .ForMember(dest => dest.comment, opt => opt.MapFrom(src => src.comment))
               .ForMember(dest => dest.account, opt => opt.MapFrom(src => src.account));

.ForMember(dest => dest.account, opt => opt.MapFrom(src => src.account))抛出类型不匹配的错误。

基本上我的问题是我不知道如何映射 CRM 实体为目的地的 LookUp 字段。

4

3 回答 3

1

查找在 CRM 中存储为 EntityReferences。因此,您需要将您的帐户转换为 EntityReference。

我从未使用过 AutoOMapper,但 Nicknow 的建议是有道理的。只需调用ToEntityReference()实体上的方法。

于 2014-03-25T15:00:15.793 回答
1

您需要在 AutoMapper中使用自定义解析器。在您的自定义解析器中,您需要查询 CRM 以获取account与您的对象匹配的记录的 ID,Account并将 EntityReference 返回到该对象。

于 2014-03-25T17:03:21.457 回答
-2

I solved it. Lookup creates a relationship. my lookp created a relationship name cxrm_account_cxrm_source_account
so instead of .ForMember(dest => dest.account, opt => opt.MapFrom(src => src.account))
I did

.ForMember(dest => dest.cxrm_account_cxrm_source_account, opt => opt.MapFrom(src => src.Account))

now it is working

于 2014-03-26T12:37:41.020 回答