Quantcast
Channel: Microsoft Dynamics CRM
Viewing all articles
Browse latest Browse all 123975

Blog Post: Automapping von Entitäten durch das SDK

$
0
0

Wenn über die Oberfläche von CRM 2011 unter einer Firma ein Kontakt angelegt wird, werden diverse Felder der neu erstellten Entität mit Werten der “Eltern”-Entität. Sofern es eine Abhängigkeit ist, welche ein Automapping beinhaltet. Dies passiert wie beschrieben z.B. bei der Anlage eines untergeordneten Kontaktes.

Wird jedoch ein Kontakt über einen SDK Befehl erzeugt, geschieht dies nicht. Man muss sich selbst darum kümmern, dass die gewünschten Felder gefüllt werden. Für dieses Problem gibt es jedoch einen Lösungsansatz. Zu finden unter: http://code.msdn.microsoft.com/Automatic-mapping-of-child-9df6db11

Diese Lösung verwendet das SDK, um Metadaten der Relationen abzurufen und prüft die gefundenen Ergebnisse auf ein vorhandes Automapping.

  //Get the entity map of the relationship  Guid _mapID = osc.CreateQuery("entitymap").SingleOrDefault<Entity>(x =>    x.GetAttributeValue<string>("targetentityname") == _relationMeta.ReferencingEntity &&    x.GetAttributeValue<string>("sourceentityname") == _relationMeta.ReferencedEntity).Id;    //Get the attribute map of the entitymap  var _attributes = osc.CreateQuery("attributemap").Where<Entity>(x =>    x.GetAttributeValue<Guid>("entitymapid") == _mapID &&    x.GetAttributeValue<Guid>("parentattributemapid") == null    );  

Falls ein solches existiert, wird es sofort ausgeführt.

  //Copy all values from target to source object if the attribute is part of the mapping  foreach(var item in _attributes) {    if((string)item["targetattributename"] != _relationMeta.ReferencingAttribute)    _target.Attributes[(string)item["targetattributename"]] = _source.GetAttributeValue<object>((string)item["sourceattributename"]);  }  

Link zur Lösung: MSDN Codebeispiel

photo credit: ruewi / photocase.com


Viewing all articles
Browse latest Browse all 123975

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>