1

我正在嘗試使用AutoMapper進行映射。
源對象是C#對象AutoMapper映射對象到MS Dynamics CRM中的查找字段

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實體命名crm_destination其中有像評論,主題字段,但它也有一個查找字段帳戶型賬戶的。

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

以下是我Automapper

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.MapFrom(SRC => src.account))是投擲類型不匹配的錯誤。

基本上我的問題是我不知道如何映射Lookup字段,其中CRM實體是目的地。

回答

1

查找存儲爲CRM中的EntityReferences。所以您需要將您的帳戶轉換爲EntityReference。

我從來沒有使用過AutOMapper,但是Nicknow建議是有道理的。只需在實體上調用ToEntityReference()方法即可。

+0

但你能告訴我要做什麼變化代碼(automapper) – user2739679

+0

如何將對象轉換爲EntityReference? – user2739679

1

您需要在AutoMapper中使用custom resolver。在您的自定義解析器中,您需要查詢CRM以獲取與您的Account對象匹配的account記錄的ID,並將EntityReference返回給此對象。

-2

我解決了它。查找會創建一個關係。我lookp建立的一種關係名cxrm_account_cxrm_source_account
所以不是.ForMember(DEST => dest.account,選擇=> opt.MapFrom(SRC => src.account))
我做

.ForMember(DEST => dest.cxrm_account_cxrm_source_account,選擇=> opt.MapFrom(SRC => src.Account))

現在它正在

+0

如何獲得Dynamics CRM的'AccountID'?你的'Account'對象沒有'Guid',但你需要一個'Guid'。上述更改與您問題中的代碼不匹配,您需要在此處進行編輯。 – Nicknow

+0

我不需要獲取帳戶ID。它使用新的GUID生成新記錄(帳戶)。只有當我需要檢查記錄是否存在時,我才需要獲取GUID。 – user2739679

+0

我不知道你爲什麼給-1答案,但上述解決方案正在爲我工​​作.. – user2739679