2016-11-16 1 views
0
public IQueryable<SMMSALESUNIT> GetPersonalSalesUnitQuery() 
{ 
    var q = from r in dax.SMMSALESUNITs 
     where r.DATAAREAID == COMPANYID 
     && r.ACTIVE == 1 
     select r; 
} 
public IQueryable<SMMSALESUNITMEMBER> GetPersonalSalesUnitMemberQuery() 
{ 
    IQueryable<SMMSALESUNIT> salesUnit = new SMMSALESUNIT().GetPersonalSalesUnitQuery(); 
    var q = from r in dax.SMMSALESUNITMEMBERs 
      join s in salesUnit on r.SALESUNITID equals s.SALESUNITID 
      select r; 
    return q; 
} 

Sur q.ToList() l'erreur suivante se produit: « La requête contient des références à des éléments définis dans un contexte de données différentes »« La requête contient des références à des éléments définis dans un contexte différent de données » barbante dbcontext est le même

+0

Afficher la déclaration et l'initialisation de 'dax'. – CodeCaster

+0

.. et montre comment (sur quelle instance) vous appelez ces deux méthodes –

+1

La dernière fois que j'ai vu cela, c'était parce qu'une variable de portée de classe était utilisée par deux threads différents. Un thread avec un contexte le définissait tandis que l'autre thread était en train de l'utiliser. Si cette classe est utilisée par plusieurs threads, supprimez toutes les variables de portée de classe. – Will

Répondre

2

problème est (le plus probable) ici:

IQueryable<SMMSALESUNIT> salesUnit = new SMMSALESUNIT().GetPersonalSalesUnitQuery(); 

dax utilisé dans GetPersonalSalesUnitQuery semble être membre d'instance de la classe SMMSALESUNIT. Ici, vous créez une nouvelle instance SMALLSALESUNIT et ainsi de nouvelle instance de dax. Ensuite, vous faites

var q = from r in dax.SMMSALESUNITMEMBERs 
     join s in salesUnit on r.SALESUNITID equals s.SALESUNITID 
     select r; 

Ceci est un autre dax, pas l'élément d'instance de SMALLSALESUNIT créé ci-dessus. Vous essayez donc de joindre des requêtes provenant de deux contextes différents, ce qui échoue.

+0

Convenu. Il devrait supprimer "new SMMSALESUNIT()". de la ligne que vous avez mentionnée et le problème résolu. – JuanR