Self Joins und Retrieve/ Associate funktionen

31. Oktober 2014 15:00

Hallo Zusammen,

ich habe aus Testzwecken eine Entität new_test erstellt.

Die Entität hat lediglich das Namensfeld und eine n:m Beziehung mit sich selber.

Set: new_testSet
Name der Relation: new_new_test_new_test

eine oData Request funktionert folgendermaßen:

Code:
https://devServer.domain.local/DevOrt/xrmservices/2011/OrganizationData.svc/new_testSet?$select=new_name,new_testId


Wenn ich die Relation hinzufüge, geht das nicht mehr
Code:
https://devServer.domain.local/DevOrt/xrmservices/2011/OrganizationData.svc/new_testSet?$select=new_name,new_testId,new_new_test_new_test&$expand=new_new_test_new_test


Ich bekomme dann die Fehlermeldung, das die Relation nicht gefunden werden kann.
Das Problem tritt immer dann auf, wenn es eine Self Join ist.

Habt ihr eine Idee?

Wichtiger als das Retrieve (oder Retrieve Multiple) ist das Associate. Das funktioniert auch nicht :/

Ich nutze übrigens das XRMServiceToolkit. die Associate Funktion sieht dort so aus:

Code:
XrmServiceToolkit.Rest.Associate(id1, "new_testSet", id2, "new_testSet", "new_new_test_new_test", function (result) {      }, function (error) {    debugger;      }, false);


Auch hier kommt nur ein Relation nicht gefunden.

Ein Retrieve auf "new_new_test_new_testSet" functioniert.
ein Create für "new_new_test_new_testSet" funktioniert mit der Meldung "Nicht Supported" nicht.

[Edit]
Ok, für C# hab ich die Lösung glaube ich gefunden.
https://social.microsoft.com/Forums/en- ... evelopment

Code:
AssociateRequest associateRequest = new AssociateRequest();
associateRequest.Target = new EntityReference("account", childAccount.AccountId.Value);
associateRequest.RelatedEntities = new EntityReferenceCollection();
associateRequest.RelatedEntities.Add(new EntityReference("account", parentAccount.AccountId.Value));
associateRequest.Relationship = new Relationship("account_parent_account");
associateRequest.Relationship.PrimaryEntityRole = EntityRole.Referenced;
var associateResponse = xrm.Execute(associateRequest);


Der Trick ist die vorletzte Zeile.

Wie geht das in Javascript?

Vielen Dank
Pascal