Wie erstelle ich einen komplexen Typ aus einer gespeicherten Prozedur, die exec () verwendet?

8

Ich möchte einen komplexen Typ erstellen, der in einem Entity Manager aus einer Abfrage verwendet wird, die dynamisch erstellt und mit exec() ausgeführt wird. Ist es möglich?; da ich einen Filter schreibe, was würden Sie stattdessen tun, wenn es nicht möglich ist?

Ich evaluiere auch mit linq, aber der Filter benötigt viele Tabellen und ihre Register, deshalb ist Effizienz ein Anliegen.

Danke ...

    
JPCF 16.09.2010, 15:22
quelle

2 Antworten

4

Ja, Sie können Entity Framework 4 und LINQ oben verwenden, es generiert die parametrisierte Abfrage und führt sie aus, das ist die Option.

Eine weitere Option ist (und ich habe es mehrmals getan) eine Basisklasse / Schnittstelle zu erstellen, sagen wir:

%Vor%

Dann können Sie Ihre konkreten Aktionen erstellen:

%Vor%

Sehr einfach, um konkrete Aktionen zu erstellen!

Um es noch einfacher zu machen, erstellen Sie einen ExecutionManager, dessen Aufgabe es ist, die Verbindung herzustellen und die Aktion auszuführen:

%Vor%

Benutze es jetzt einfach:

%Vor%

Mit dieser einfachen Technik ist es wirklich einfach, die gesamte Verbindungs- / Befehls- / Ausführungslogik von den konkreten Aktionen in die Basisklasse zu verschieben, und die konkreten Aktionen betreffen nur das Generieren von SQL und das Konvertieren von Datenbankausgaben in aussagekräftige Ergebnisse.

Viel Glück:)

    
Alexey Raga 20.09.2010, 11:35
quelle
1

Wenn Sie sich für die Linq-Route entscheiden und nach einer guten Filtermethode suchen. LinqKit ist eine großartige Bibliothek zum Erstellen von Ad-hoc-Prädikaten. Das Problem mit der integrierten Linq-Bibliothek besteht darin, dass Sie nur UND-Anweisungen ad-hoc kombinieren können. Sie können OR-Anweisungen nicht kombinieren. Linqkit macht das zu einem Kinderspiel.

    
Markis 28.09.2010 01:49
quelle