Fehlende Properties bei RetrieveMultipleRequest

20. November 2009 10:39

Hallo zusammen,

ich bin gerade dabei ein kleines Stück C#-Code zu schreiben, der mir meine CRM-Daten aktualisiert. Es handelt sich dabei um ein Lookupfeld in einer selbstdefinierten Entität (new_geraet).

Der Zugriff auf die Datensätze hole ich mir wie folgt:
Code:
// Build query for 'geraet'-entities
QueryExpression query = new QueryExpression();
query.EntityName = "new_geraet";
//query.ColumnSet = new ColumnSet(new String[] { "new_geraetid", "new_geraetestandortid", "new_adressnummer", "new_seriennummer" });
query.ColumnSet = new AllColumns();
         
// Get 'geraet'-collection
RetrieveMultipleRequest request = new RetrieveMultipleRequest();
request.ReturnDynamicEntities = true;
request.Query = query;
RetrieveMultipleResponse response = (RetrieveMultipleResponse)crmService.Execute(request);
BusinessEntityCollection geraete = response.BusinessEntityCollection;


Da ich das ColumnSet mit AllColumns() definiere sollten ja eigentlich alle Properties der Entität zurückkommen. Es scheint jedoch, dass das Anfrageergebnis lediglich die Properties enthält, die mit Werten gefüllt sind! Ich will wie oben schon beschrieben ein Lookupfeld mit einem Wert belegen. Jedoch läuf mein Programm gegen einen Fehler, wenn das Lookupfeld nicht bereits mit einem Wert vorbelegt ist.

Die BusinessEntities enthalten definitiv eine variable Anzahl an Properties (hab ich im Debugger überprüft)!!!
Daher kommt es zu einem Fehler, wenn ich auf ein Feld zugreifen will, dessen Wert noch nicht definiert wurde:

Code:
foreach (DynamicEntity geraet in geraete.BusinessEntities)
{
      Lookup lookup = (Lookup)geraet.Properties["new_geraetestandortid"];  // *** ERROR** //
      lookup.Value = accountKey.Value;
}

Führt zu
Code:
[System.Collection.Generic.KeyNotFoundException]
{"Der angegebene Schlüssel war nicht im Wörterbuch angegeben."}


Ich verwende eine leicht abgewandelte Form des codes auch für andere Felder und da funktioniert alles wie es soll. Allerdings enthalten diese Felder beim Update bereits Werte. Kann mir vielleicht jemand einen Tip geben, wie ich auf die Properties Zugriff bekomme? Vermute, dass ich in meiner Anfrage noch was drehen muss, aber ich bin ratlos, was...

1000 Dank schon mal im Voraus

Re: Fehlende Properties bei RetrieveMultipleRequest

20. November 2009 17:08

Hallo nochmal,

ich konnte Das Problem jetzt umgehen, indem ich das Lookupfeld beim Import mit einem Wert vorbelege. Damit liefert mir der Request die gewünschte Property und ich kann diese problemlos aktualisieren. An meinem Code musste ich nichts mehr verändern!

Falls mir trotzdem jemand sagen kann, was ich in meinem Code falsch gemacht habe, wäre ich dennoch Dankbar, denn den Wert erst mal vorzubelegen ist schon eine Krücke und es sollte ja auch ohne diesen Trick möglich sein, den Wert zu setzen.

Danke