Ich denke, es ist Zeit für Ihr Team, "vertraut" mit EF zu werden, wenn Sie es verwenden werden. Das Ausführen jeder einzelnen CRUD-Operation mit gespeicherten Prozeduren ist nicht der Pfad, den ich nehmen würde. Wenn die gespeicherte Prozedur etwas Einfaches wie:
Get the company record with ID 1
Dann würde ich gespeicherte Prozedur nicht verwenden und EF verwenden. Für komplexere Operationen können gespeicherte Prozeduren verwendet werden. Daher möchten Sie und Ihr Team möglicherweise eine Teamarbeitssitzung haben, um zu entscheiden, wann gespeicherte Prozeduren verwendet werden sollen und wann nicht. Sobald Sie sich entschieden haben, sollte das ganze Team bei diesem Ansatz bleiben. Wenn Sie es ändern müssen, führen Sie ein anderes Meeting durch und stellen Sie sicher, dass alle informiert sind. Es ist wichtig für alle, das gleiche Muster zu befolgen, sobald das Team zugestimmt hat.
Wie gespeicherte Prozeduren mit EF bedienen?
Ich würde mit einem Test gespeicherte Prozedur starten, um zu sehen, wie das Ganze funktioniert. Sobald Sie und Ihr Team genau wissen, wie der Prozess mit EF funktioniert, stellen Sie ein Design, Konventionen usw. zusammen, und dann sollte das gesamte Team dem gleichen Muster folgen.
- Schreiben Sie eine gespeicherte Testprozedur, die ein resulset zurückgibt.
- Erstellen Sie das EDMX, indem Sie von Visual Studio aus eine Verbindung zu Ihrer Datenbank herstellen.
- Fügen Sie die gespeicherte Prozedur zu Ihrem EDMX hinzu. Verwenden Sie den Modellbrowser, um eine
Function Import
hinzuzufügen. Dadurch wird in Ihrem Kontext eine Methode erstellt, die Sie wie jede andere Methode aufrufen können, aber darunter wird Ihre gespeicherte Prozedur aufgerufen. Bitte lesen Sie this für weitere Antworten auf diesen Schritt.
- Schritt 4 erstellt eine Klasse basierend auf der Ergebnismenge Ihrer gespeicherten Prozedur.
Hinweis
Möglicherweise müssen Sie diesen Flag auszuschalten, nur vorübergehend, für EF den komplexen Typen auf Ihrer gespeicherten Prozedur Ergebnismenge basiert.
SET FMTONLY OFF
Siehe this Antwort für mehr über die Flagge.
Ich stimmen Sie zu, dass der Ansatz der Verwendung von storedprocs nicht dem Weg nach vorn gehen, aber es ist nur, dass das Team mehr Kontrolle über StoredProcedures benötigt, so dass SQL-Team Probleme beheben kann, die in der Produktion auftreten. Auch wollen sie die Probleme in storeprocedures der Lage sein, zu reparieren und implementieren vielmehr, dass die Code-Basis zu berühren und den Einsatz von ihm. Ich habe tatsächlich das von dir vorgeschlagene versucht. Das ist bis zum Erstellen eines Funktionsimports.Ich schaue mir ein Beispiel an, wie ein Wrapper über Entity-Framework erstellt werden würde und wie die Storedrocedures an Business-Objekte angehängt würden. – Tom
Leider haben Sie in Ihrer Frage nichts davon erwähnt, dass Sie nach einem Wrapper suchen ... vielleicht Sie sollten [this] (http://stackoverflow.com/help/how-to-ask) lesen. Zum Mappen können Sie auch [AutoMapper] (http://automapper.org/) verwenden. – CodingYoshi
Entschuldigung, dass ich mit meiner Frage nicht klar bin. Ich kenne Auto Mapper und habe die Zuordnung zu Tabellen gemacht. Wie erfolgt die Zuordnung gespeicherter Prozeduren? – Tom