2016-05-19 13 views
5

Ich versuche FakeXrmEasy zu verwenden, um einige Unit-Tests für CRM Online (2016) durchzuführen, und ich habe Probleme mit mit einem N einen meiner Tests einrichten: N BeziehungCRM 2016 FakeXrmEasy N: N Beziehungen

der folgende Code legt einen Faked Kontext mit zwei Entitäten in sie und initialisiert eine Gefälschte Organisation Service:

var entity1 = new New_entityOne(); 
var entity2 = new New_entityTwo(); 

var context = new XrmFakedContext(); 
context.ProxyTypesAssembly = Assembly.GetAssembly(typeof(New_entityOne)); 
context.Initialize(new List<Entity>() 
{ 
    entity1, 
    entity2 
}); 

var service = context.GetFakedOrganizationService(); 

ich dann versuchen, ein N zu erstellen: N Beziehung zwischen diesen Stellen:

var join = new AssociateRequest 
{ 
    Relationship = new Relationship 
    { 
     SchemaName = "new_entityOne_new_entityTwo", 
     PrimaryEntityRole = EntityRole.Referenced 
    }, 
    Target = entity1.ToEntityReference(), 
    RelatedEntities = new EntityReferenceCollection 
    { 
     entity2.ToEntityReference() 
    } 
}; 

service.Execute(join); 

Wenn ich diese Request ausführen, erwarte ich eine N: N-Rekord kommen in meine Mock-Daten erzeugt werden, zwischen entity1 und entity2

Stattdessen ich einen Fehler wie diese bekommen:

eine Ausnahme vom Typ ‚System.Exception‘ trat in FakeXrmEasy.dll wurde aber nicht in Benutzercode behandelt

Zusätzliche Informationen: Beziehung new_entityOne_new_entityTwo ist nicht in den Metadaten-Cache vorhanden

Hat jemand anderes versucht, dieses Einheiten-Framework auf diese Weise zu verwenden? Bis zu diesem Zeitpunkt habe ich wirklich gute Ergebnisse erzielt. offensichtlich

, das ist nicht mein eigentlichen Wesen und Beziehung Name

Antwort

2

Bitte versuchen, eine gefälschte Beziehung Zugabe als here gezeigt

Dies liegt daran, für N: 1 keine intersect Tabelle ist, werden durchgeführt, schließt sie über eine EntityReference und das ist es, aber für viele zu viele, da es eine Schnittstellentabelle gibt, müssen wir dem Framework vorerst sagen, wie wir mit diesem Szenario umgehen sollen.

Es gab auch ein Update, bei dem ProxyTypesAssembly nicht mehr zwingend erforderlich ist. Solange Sie früh gebundene Typen verwenden, wird die Assembly der Proxy-Typen von Ihren Typen "erraten".

So könnte man diese entfernen

context.ProxyTypesAssembly = Assembly.GetAssembly(typeof(New_entityOne)); 

Ich werde in der Dokumentation auf der Website aktualisieren müssen ..., wenn ich eine Chance haben :)

bearbeiten

Web Website aktualisiert: http://dynamicsvalue.com/get-started/nn-relationships

+0

Vielen Dank Jordi, ich habe Ihre Beispiele wirklich hilfreich gefunden, ich konnte einfach nicht diese finden. Ich werde auch diese veraltete Zeile entfernen – jasonscript

+0

@jascript Sie sind herzlich willkommen. Fühlen Sie sich frei, mich zu mailen, wenn Sie weitere Fragen haben, es könnte schneller sein, da ich nicht wusste, dass es diese Frage hier gab, bis Sie mich direkt erwähnten :) – Jordi

+0

@jasonscript Nur eine neue Version der Website mit einem neuen Abschnitt bereitgestellt für N: N-Beziehungen. Wenn du noch etwas anderes finden kannst, lass es mich wissen :) – Jordi