CRM 2011: EntityName und EntityLogicalName fehlen
-
Montag, 16. April 2012 08:23
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.
Alle Antworten
-
Montag, 16. April 2012 08:30Moderator
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- Bearbeitet Michael SulzMVP, Moderator Montag, 16. April 2012 08:45
-
Montag, 16. April 2012 08:32
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:42
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=24004Ich hoffe das bringt weiter. Andreas(a)Donaubauer.com www.crmfaq.de
-
Montag, 16. April 2012 09:05
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.
-
Donnerstag, 3. Mai 2012 09:30
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

