2016-05-19 24 views
5

sto cercando di utilizzare FakeXrmEasy per eseguire alcuni test unitari per CRM Online (2016) e sto avendo problemi durante la configurazione uno dei miei test con una N: N relazioneCRM 2016 FakeXrmEasy N: N rapporti

il codice seguente imposta un contesto simulato con 2 soggetti in esso e inizializza un'organizzazione Servizio simulato:

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(); 

allora provo a creare un N: N relazione tra queste entità:

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); 

Quando eseguo questo Request, mi aspetto una N: N-join record di essere prodotto in miei dati finti, tra entity1 e entity2

Invece sto ottenendo un errore come questo:

un'eccezione di tipo 'System.Exception' si è verificato in FakeXrmEasy.dll ma non è stata gestita nel codice utente

Ulteriori informazioni: relazione new_entityOne_new_entityTwo non non esiste nella cache dei metadati

Qualcun altro ha provato a utilizzare questa struttura dell'unità in questo modo? Fino a questo punto ho ottenuto ottimi risultati usando questo.

ovviamente, questi non sono i miei nomi di entità e relazioni effettive

risposta

2

Si prega di provare ad aggiungere un rapporto falso, come mostrato here

Questo perché per N: 1 non c'è alcuna tabella si intersecano, si unisce vengono eseguite mediante un EntityReference e questo è tutto, ma per molti a molti, poiché esiste una tabella intersect, dobbiamo dire al framework come affrontare questo scenario per ora.

C'era anche un aggiornamento in cui non è più obbligatorio utilizzare ProxyTypesAssembly, a patto che si utilizzino i primi tipi associati, l'assembly dei tipi di proxy sarà "indovinato" dai tipi.

Così si potrebbe rimuovere questo

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

sarò necessario aggiornare la documentazione nel sito ... ogni volta che ho la possibilità :)

Modifica

Web sito aggiornato: http://dynamicsvalue.com/get-started/nn-relationships

+0

Grazie mille Jordi, ho trovato i tuoi esempi davvero utili, proprio non riuscivo a trovare questo. Rimuoverò anche quella linea deprecata – jasonscript

+0

@jasonscript Sei il benvenuto. Sentitevi liberi di inviarmi un'e-mail se avete altre domande, potrebbe essere più veloce in quanto non mi rendevo conto che c'era questa domanda finchè non mi avete menzionato direttamente :) – Jordi

+0

@jasonscript Appena implementata una nuova versione del sito web con una nuova sezione per N: N relazioni. Se trovi che qualcos'altro potrebbe esserci, per favore fammi sapere :) – Jordi