2016-05-03 6 views
1

Ich muss den vollständigen Namen und das Elternkonto des Kontakts in Dynamics CRM abrufen. Ich verwende folgenden Code:Get Dynamics CRM Kontakt Parentcustomerid

ColumnSet cols = new ColumnSet(new String[] { "fullname", "parentcustomerid" }); 
    Entity retrContact = (Entity)orgService.Retrieve("contact", contactID, cols); 
    fullName = retrContact.Attributes["fullname"]; 
    parentAccount = retrContact.Attributes["parentcustomerid"]; 
    nameStr = fullName.ToString(); 
    companyStr = parentAccount.ToString(); 

Mein Problem ist, dass companyStr "Microsoft.Xrm.Sdk.EntityReference" statt Namenswert bekommen. parentAccount enthält folgende:

LogicalName "account" string 
    Name "Microsoft Corp" string 
    RowVersion null string 

Wie kann ich Name string bekommen?

+0

Sie haben bereits die Antwort. companyStr ist eine EntityReference und Sie können einfach companyStr.Name verwenden, um den Namen zu erhalten. – Renjith

+0

companyStr ist ein String, daher ist .Name dort nicht vorhanden. Ich wundere mich, warum ich elterAccount.Name nicht verwenden kann. Ich erhalte einen Fehler: \t \t \t Fehler CS1061: 'Objekt' enthält keine Definition für 'Name' und keine Erweiterungsmethode 'Name' akzeptiert ein erstes Argument vom Typ 'Objekt' könnte gefunden werden (fehlt Ihnen ein mit Direktive oder einer Assembly-Referenz?) –

Antwort

0

Das parentcustomerid Objekt ist ein n EntityReference Objekt, das den gesuchten Namen hat. Dieser Code funktioniert:

ColumnSet cols = new ColumnSet(new string[] { "fullname", "parentcustomerid" }); 
Entity retrContact = (Entity)orgService.Retrieve("contact", new Guid("{9DF2ACC2-0212-E611-80E4-6C3BE5A83B1C}"), cols); 
var parentAccount = (EntityReference)retrContact.Attributes["parentcustomerid"]; 
var companyStr = parentAccount.Name; 
+0

Danke @Polshgiant. Du hast mir eine Idee gegeben. Hier ist der endgültige Code: 'parentAccountRef = (EntityReference) retrContact.Attributes [" parentcustomerid "]; Entität retrAccount = (Entität) orgService.Retrieve ("account", parentAccountRef.Id, new ColumnSet (true)); companyStr = retrAccount.Attributes ["name"]. ToString(); ' –

0

Sie wahrscheinlich den parentAccount vom Server holen sollte (siehe auch EntityReference.Name Property

This property is not automatically populated unless the EntityReference object has been retrieved from the server.

ZB sollten Sie die Daten vom Server holen die Id parentcustomerid verwenden, ein wenig wie

Entity Account = service.Retrieve(Account.EntityLogicalName, parentAccount.Id, new ColumnSet(true)); 

Sie können sicher ersetzen Account.EntityLogicalName durch "account" string.