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