2012-04-13 2 views
1

Je rencontre des problèmes lors de la création de jointures dans EF en utilisant ma couche de service. Chaque fois que j'essaie de faire une jointure je reçois l'erreur suivante:Entity Framework 4.3, à l'aide de jointures

« L'expression de LINQ spécifié contient des références à des requêtes qui sont associées à des contextes différents »

J'ai passé d'innombrables heures à essayer de comprendre. La plupart des articles que j'ai vus traitent des ensembles d'entités jointes provenant de différents contextes. Cependant, cela m'arrive en utilisant la même base de données. Qu'est-ce que je fais mal?

code Exemple:

public virtual IList<ProductVariantAttribute> GetProductVariantAttributes(int ProductID) 
    { 
     var query = from pva in _productVariantAttributeRepository.Table 
        join b in _productAttributeRepository.Table on pva.ProductAttributeID equals b.ProductAttributeID 
        where pva.ProductID == ProductID 
        select pva; 

     var productVariantAttributes = query.ToList(); 
     return productVariantAttributes; 
    } 
+0

Les articles parlent des instances de contexte les plus probables, et puisque vous semblez avoir un modèle de référentiel, il est possible que chaque référentiel ait sa propre instance de contexte. – meandmycode

Répondre

1

Cela n'a rien à voir avec les bases de données. Il a tout à voir avec instances de ObjectContext.

Vous faites référence à deux référentiels différents dans votre requête. Je suppose que chacun d'eux enveloppe un EntityContext. Cela provoquera ce message.

C'est également un anti-pattern. Je vous recommande d'ouvrir exactement un EntityContext par requête HTTP ou par appel WCF ou quel que soit votre unité de travail.

+1

Merci, j'inscris l'interface de contexte en utilisant DI J'ai oublié d'ajouter l'attribut .InstancePerHttpRequest() dans le registre de dépendance – Dereck

Questions connexes