J'ai une question liée à this one. Je ne veux pas faire un calcul (agrégation), mais j'ai besoin d'obtenir des valeurs d'affichage d'une association. Dans mon code C#, je peux directement référencer la valeur, car la contrainte de clé étrangère fait Linq générer tout le câblage nécessaire. Lorsque je spécifie IQueryable comme propriété de source de données Gridview et référence quelque chose qui n'est pas une colonne de l'entité principale dans le jeu de résultats, j'obtiens une erreur indiquant que la colonne n'existe pas. En tant que débutant à Linq, je devine que le devoir convertit implicitement le IQueryable à une liste, et les associations sont perdues. Ma question est, quelle est une bonne façon de faire cela?Source de données Linq to SQL et Gridview
Je suppose que je peux contourner cela en écrivant une requête parallèle retournant un type anonyme qui contient toutes les colonnes dont j'ai besoin pour la grille. Il semble que ce faisant, je garderais en mémoire les données en mémoire que j'ai déjà. Puis-je interroger les structures de données en mémoire à la volée lors de l'attribution de la source de données? Ou y a-t-il une solution plus directe?
La vue de grille est censée afficher les associations de groupes médicaux du médecin, et le nom de l'association est dans une table de consultation.
IQueryable<Physician> ph =
from phys in db.Physicians
//from name in phys.PhysicianNames.DefaultIfEmpty()
//from lic in phys.PhysicianLicenseNums.DefaultIfEmpty()
//from addr in phys.PhysicianAddresses.DefaultIfEmpty()
//from npi in phys.PhysicianNPIs.DefaultIfEmpty()
//from assoc in phys.PhysicianMedGroups.DefaultIfEmpty()
where phys.BQID == bqid
select phys;
alt text http://heeroz.com/phys.jpg
Ainsi, en fonction de la réponse de Denis, j'ai enlevé tous les trucs inutiles de ma requête. J'ai pensé que je ne pose peut-être pas la bonne question pour commencer.
Quoi qu'il en soit, la page affiche les données d'un médecin. Je souhaite afficher toutes les affiliations de groupes médicaux dans une grille (et laisser l'utilisateur insérer, modifier et mettre à jour les affiliations). Je réalise maintenant que je n'ai pas besoin de me joindre explicitement à ces autres tables - Linq fait cela pour moi. Je peux accéder au numéro de licence, qui est dans un tableau séparé, en le référençant à travers la chaîne des associations d'enfants. Je ne peux pas référence au nom du groupe médical dans le gridview, ce qui me ramène à ma question:
AffiliationGrid.DataSource = ph.First().PhysicianMedGroups;
Cela ne fonctionne pas, car med_group_print_name n'est pas accessible pour le GridView:
A field or property with the name 'med_group_print_name' was not found on the
selected data source.
Encore une fois, ours avec moi, si tout est trop évident que je ne comprends pas Linq ... parce que je ne comprends pas.
Oui J'ai pensé que les charges pourraient ne pas être nécessaires. J'ai révisé ma question. – cdonner
ou, plutôt, le fera bientôt. – cdonner
Puis j'obtiens ceci: Un champ ou une propriété avec le nom 'MedGroupLookup.med_group_print_name' est introuvable sur la source de données sélectionnée. – cdonner