Ich habe dies in meinem Repository und es funktioniert wie erwartet:
%Vor%Allerdings habe ich einige Tabellen mit entweder zu vielen Spalten (Beispiel: 10 Spalten, wo ich nur 3 von ihnen brauche) oder einige Tabellen, in denen ich lange Texte drin habe und wieder, sie müssen nicht abgerufen werden.
Ich habe nachgedacht, ob es eine Möglichkeit gibt, nach dem Primärschlüssel zu suchen, aber vielleicht ein IQueryable-Ergebnis zu erhalten? Oder zumindest etwas, das mir erlauben könnte, so etwas zu tun:
%Vor%Ich würde eine andere Klasse erstellen, die die Teilmenge der gewünschten Eigenschaften enthält. Auf diese Weise sollte immer klar sein, mit was Sie arbeiten:
%Vor%Dann könnten Sie eine separate Methode in Ihrem Repository haben:
%Vor%Sie könnten auch über die Verwendung von Vererbung nachdenken:
%Vor% Dann hätten Sie zwei Repositories. Eine für EntityClass
und eine für EntityClassLite
, jede mit ihrer eigenen Find
-Methode, von denen jede die benötigten Daten zurückgibt.
Nebenbei bemerkt, es ist sehr schwer vorstellbar, dass eine Entität mit so großen Spalten, die eine einzelne Instanz davon abruft, zu erheblichen Leistungsproblemen führen würde.
Nun, ich denke, Sie sollten das Repository (wenn Sie EF verwenden) noch einmal überdenken und Ihre abrufende Logik in eine bestimmte Methode wie GetEmployeeById(int id)
in verschieben Service -Schicht.
Und hier ist ein Zitat darüber, was passiert, wenn Sie das Repository zusammen mit Entity Framework verwenden.
Sie haben alle Funktionen Ihrer Datenspeichertechnologie aufgegeben, um auf einfache, kastrierte und ineffiziente Weise auf Ihre Daten zugreifen zu können. - Khalid Abuhakmeh
Wenn Sie die ID in die Auswahl aufnehmen möchten, können Sie Folgendes tun:
%Vor%Tags und Links c# entity-framework linq iqueryable