2010-12-03 18 views
1

J'utilise le framework .Net 4.0, C#, WPF, EF 4 et FireBird.Options pour afficher les champs de différentes bases de données dans WPF DataGrid?

J'ai des données (un numéro de client multi-domaine) dans une grille de données qui provient d'une table dans une base de données FireBird. Dans une deuxième base de données FireBird, j'ai une table qui contient plus d'informations (le numéro de client, avec le nom du client) que j'ai besoin d'apparaître dans la grille. Il n'y a pas plus de mille lignes dans les tableaux.

Si les tables étaient dans la même base de données, cela serait trivial. Cependant, étant donné que la base de données FireBird que j'utilise ne prend pas en charge les jointures entre bases de données, je crois que je devrais joindre les données au niveau de l'application.

Actuellement, j'affiche uniquement les valeurs de clé dans la grille, mais j'ai également besoin d'afficher le nom du client dans la deuxième base de données. Je lie le DataGrid à la liste <> produite par une requête LINQ contre l'EF.

J'ai pensé que je pourrais mettre en place un second modèle EF pour la deuxième base de données, puis modifier la requête LINQ pour combiner le contenu des deux tables dans une classe anonyme avec les champs requis.

Je ne suis pas sûr quelles autres options pourraient être disponibles pour ce faire.

Je pourrais également éliminer le problème en poussant la table requise de la deuxième base de données dans le premier afin qu'une jointure SQL puisse être utilisée. Cela devrait être fait ailleurs dans le système et pourrait finir par être la solution préférée, mais je ne veux pas y aller sans d'abord évaluer d'autres solutions.

Répondre

0

Je suis allé de l'avant et mis en place un deuxième modèle d'entité contre la deuxième base de données. J'ai mis en place une classe pour contenir les instances de modèle d'entité et gérer les interactions entre bases de données (certaines de ces opérations sont effectuées avec des propriétés sur des classes partielles pour modéliser des entités). La vue modèle traite les données essentiellement comme une base de données unique. Lorsque nous nous déplacerons dans le serveur SQL et que nous nous débarrasserons de l'indésirable à double base de données, l'application elle-même n'aura pas à changer beaucoup.

Le seul problème que j'ai rencontré jusqu'à présent est que je dois être prudent lors de la configuration des requêtes linq, en combinant des entités des deux modèles dans une requête génère parfois des erreurs. Pas difficile de contourner quand même.