Linq to SQL und Gridview Datasource
-
03-07-2019 - |
Frage
Ich gehe davon aus, dass ich um diese durch eine parallele Abfrage Schreiben Rückkehr einen anonymen Typ arbeiten können, die alle Spalten enthält, die ich für die gridview benötigen. Es scheint, dass, indem Sie, dass ich Daten im Speicher halten würde redundant, dass ich schon habe. Kann ich die In-Memory-Datenstrukturen im Fluge abfragen, wenn die Datenquelle zuweisen? Oder gibt es eine direkte Lösung?
Die Gridview sollte den Arzt medizinische Gruppenzugehörigkeiten angezeigt werden, und der Name des Vereins ist in einer Lookup-Tabelle.
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;
(Quelle: heeroz.com )
So, basierend auf Denis' Antwort, ich entfernte alle nicht benötigte Sachen aus meiner Anfrage. Ich dachte, dass ich vielleicht nicht die richtige Frage stellen zu beginnen.
Wie auch immer, zeigt die Seite eines Daten des Arztes. Ich möchte alle medizinischen Gruppenzugehörigkeiten in einem Raster angezeigt werden (und lassen Sie die Benutzer einfügen, bearbeiten und aktualisieren Zugehörigkeiten). Ich weiß jetzt, dass ich brauche nicht ausdrücklich in anderen Tabellen zu verknüpfen - Linq das macht für mich. Ich kann die Lizenznummer zugreifen, die in einer separaten Tabelle, indem sie sie durch die Kette von Kindern Verbänden verweisen. Ich kann die medizinischen Gruppennamen in der Gridview nicht verweisen, die mich zurück zu meiner Frage bringt:
AffiliationGrid.DataSource = ph.First().PhysicianMedGroups;
Das funktioniert nicht, weil med_group_print_name nicht zugänglich für die Gridview ist:
A field or property with the name 'med_group_print_name' was not found on the
selected data source.
Auch hier Bär mit mir, wenn es allzu offensichtlich ist, dass ich verstehe, Linq nicht ..., weil ich dies nicht tun.
Lösung
Ihre Abfrage scheint seltsam. Sie sollten versuchen, einfach anzuzeigen
ph = from phys in db.Physicians
where phys.BQID == bqid
select phys;
in Ihrem Raster. Das sollte funktionieren. Auch, warum die Anrufe zu laden ()? Wenn die Datacontext nicht angeordnet ist, wenn das Gitter verbindlich ist, sollten Sie es nicht benötigen.
Wenn Sie noch Fragen haben, können Sie bitte die Fehlermeldung Sie Beiträge verfassen erhalten, das helfen würde ...
Teil 2
Das Problem ist, dass Sie den Namen haben, ist effektiv nicht in der PhysMedGroup. Sie müssen die MedGroupLookup eine Ebene navigieren Sie den Namen zuzugreifen, da es eine Eigenschaft dieser Klasse ist.
Je nach Technologie Sie verwenden (es scheint entweder WinForms oder Web Forms zu sein), müssen Sie Ihre Datenbindung für den Zugriff auf MedGroupLookup.med_group_print_name konfigurieren.