none
CRM 2011: EntityName und EntityLogicalName fehlen

    Frage

  • Hallo,

    für CRM 4.0 haben wir mehrere Services programmiert, die ich jetzt auf CRM 2011 umstellen muss.

    Im alten Code habe ich z.B.

     if (typeof(T2).Name == EntityName.contact.ToString())
    

    Im 2011, hab ich gelesen, ist das äquivalent zu Contact.EntityLogicalName.

    Leider gibt's die Property bei mir nicht. alles was ich habe ist nur Contact.CreateContact(). Ich habe die neue Service Dateien referenziert und auch Microsoft.Xrm.Sdk usw. als usings.

    Woran kann das liegen ?

    Im CRM 4.0 habe ich auch noch

    foreach (Account objAccount in objBusinessEntityCollection.Entities) { lstAccounts.Add(objAccount); }

    Für 2011 funtioniert das leider nicht ?

    Könnt ihr mir bitte paar Hinweise geben ?

    Danke.

    Montag, 16. April 2012 08:23

Alle Antworten

  • Hallo,

    du hast die neuen DLLs von CRM2011 und die Proxy-DLL eingebunden?

    EntityLogcalName steht nur zur Verfügung, wenn du early-binding benutzt, also z.B:

    // This statement is required to enable early-bound type support.
    _serviceProxy.EnableProxyTypes();

    siehe dazu auch die entsprechenden Beispiele im SDK.


    Viele Grüße

    Michael Sulz
    MVP für Microsoft Dynamics CRM
    Blog
    Website XING LinkedIn Facebook Twitter


    Montag, 16. April 2012 08:30
    Moderator
  • Hallo,

    neim, Proxy-DLL's habe ich nicht gebunden.

    Ich verwende keine Early-Binding. Dann kann's bei mir das mit dem EntityLogicalName nicht funktionieren..schade.

    Danke !

    Montag, 16. April 2012 08:32
  • Hallo Thea!

    Mit Xrm.Page.data.entity.getEntityName() bekommst du den EntityNamen.

    Im CRM 2011-Sdk findest du Hilfe und Beispiele.
    http://www.microsoft.com/download/en/details.aspx?id=24004


    Ich hoffe das bringt weiter. Andreas(a)Donaubauer.com www.crmfaq.de

    Montag, 16. April 2012 08:42
  • Hallo Andreas,

    danke für den Tipp. Bir mir wird das nicht gehen, weil ich Windows Services  programmiere d.h. ich synchronisiere CRM mit anderen Backgrount Systeme, die wir haben. Ich habe zur diesem Zeitpunkt im Programm keinen zugriff auf dem Page.

    Ich kann das so lösen:

    if (typeof(T2).Name == "Contact")
    

    was aber nicht programmatisch so gut ist, weil string sind im Programmcode nicht ganz gut gesehen.

    Danke.

    Montag, 16. April 2012 09:05
  • Hallo Thea,

    Wenn du die Typen nicht per String "hardcoded" überprüfen willst bleibt dir wohl nur die Möglichkeit die entsprechenden Klassen per CrmSvcUtil zu generieren und diese DLL dann in dein Projekt einzubinden. Dies sollte aber technisch gesehen in einem Windows-Service kein Problem darstellen, so lange sich die Anpassungen des CRM-Systems nicht gravierend verändern. Du kannst in dem CrmSvcUtil auch Filter, Namespace, etc. übergeben, dass du wirklich nur die Klassen so bekommst wie du diese auch benötigst.

    Bezüglich des Fehlers in deiner foreach-Schleife tippe ich "Typ-Unverträglichkeit" - versuche mal statt Account einfach Entity zu nehmen...

    Liebe Grüße,

    Andreas


    Andreas Buchinger
    Microsoft Dynamics Certified Technology Specialist
    MCPD: SharePoint Developer 2010

    Donnerstag, 3. Mai 2012 09:30