Comment utiliser deux EDMX, dans des assemblages distincts, mais au-dessus de la même base de données,
pour créer une requête linq-to-entities qui les utilise tous les deux?EF: requête linq-to-implicite edmx (même DB)
E.g.
C'est ce que je suis en train de faire:
using (var context1 = new Entities1())
{
using (var context2 = new Entities2())
{
var items2 = context2.Items.Where(item2 => item2.Color == "Red");
var query = context1.Items.Where(item =>
items2.Any(item2 => item2.PainterId == item.PainterId));
}
}
> Il en résulte NotSupportedException. Message: "L'expression LINQ spécifiée contient des références aux requêtes associées à différents contextes."
> Cette exception est de lancer, même si Entities2 est remplacé par entités1
(même si les deux contextes sont de même EDMX) et à la fois en utilisant la même chaîne de connexion.
A titre de comparaison, cela sur les autres travaux manuels et les résultats dans une seule instruction SQL:
using (var context1 = new Entities1())
{
var items2 = context2.Items.Where(item2 => item2.Color == "Red");
var query = context1.Items.Where(item =>
items2.Any(item2 => item2.PainterId == item.PainterId));
}
Contraintes:
Mon intention est d'utiliser deux EDMXs AVEC le support du concepteur - pas de piratage EDMX d'une manière qui casse concepteur ou qui est écrasé lors de la mise à jour de la base de données.
EDMX # 1 ne peut pas connaître l'EDMX # 2 (cependant # 2 peut connaître # 1).
Je souhaite que le résultat soit traduit en une seule requête SQL, ne pas lire les résultats de la première partie en mémoire, puis les renvoyer à la base de données en tant qu'entrée pour la deuxième partie de la requête.
connexes, mais pas ce que je cherche:
- Cross database joins in Entity Framework4
- Linq to Entities/Entity Framework cross edmx "join"
- multiple edmx in the same .net solution
Je m'y attendais, il faudrait utiliser un seul contexte et je examine une approche de la fusion du EDMXs à faire, cependant, votre hack peut être plus simple. –
À quoi sert le nom du conteneur en interne? –
- Est utilisé pour la mise en cache des métadonnées ObjectContext, pour une création plus rapide des contextes? –