2017-03-11 2 views
-2

Ich bin auf der Suche nach der Datenzugriffsebene meiner MVC5-Anwendung zu erstellen. In unserem Projekt gehen wir für die erste Methode der Datenbank mit gespeicherten Prozeduren vor, da das Team mit SQL vertrauter ist und alle CRUD-Operationen über gespeicherte Prozeduren ausführen möchte.Entity Framework-Datenbank ersten Ansatz mit gespeicherten Prozeduren

Ich bin auf der Suche nach guten Beispielen, die die Umsetzung dieses Ansatzes zeigen. Ich möchte sehen, wie die Entitäten zugeordnet sind. Da dies gespeicherte Prozeduren in der Datenbank sein würden, werden sie Klassen in .net zugeordnet.

Antwort

0

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.

  1. Schreiben Sie eine gespeicherte Testprozedur, die ein resulset zurückgibt.
  2. Erstellen Sie das EDMX, indem Sie von Visual Studio aus eine Verbindung zu Ihrer Datenbank herstellen.
  3. 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.
  4. 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.

+0

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

+0

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

+0

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

Verwandte Themen