Wie kann ich eine gespeicherte Prozedur verwenden, + repository + unit of work Pattern in Entity Framework?
Habe ich MVC web-Anwendung-Projekt mit Entity Framework code first. In diesem Projekt werde ich verwenden generische repository und unit of work Pattern. Plus ich möchte, um die Verwendung von gespeicherten Prozeduren für die get-Liste durch und get-list
Methoden.
Wie kann ich gespeicherte Prozeduren verwenden mit generischen repository und unit of work Pattern?
Der code-first-Ansatz unterstützt nicht die Verwendung von gespeicherten Prozeduren nur noch nicht - das ist ein feature, das kommen wird in Entity Framework-v6, der soll später in diesem Jahr
Um genau zu sein, es nicht unterstützt, ist mapping gespeicherten Prozeduren .NET-Methoden. Mit Sie, und wickelte einen Anruf zu
Tatsächlich, ich denken Sie Sie meinen, ist, dass es unterstützt keine Zuordnung der EF-Modell zu gespeicherten Prozeduren. Diese wird behandelt in der v6. Ordnen Sie eine gespeicherte Prozedur auf ein Objekt, und Sie können anzeigen, dass sproc auf eine Methode (ie wickeln Sie es). Aber das ist weitgehend ein manueller Prozess, der im code zuerst.
ich googeled aber ich kann nicht finden, eine Probe verwenden, speichern Sie die Prozedur Dank für Bearbeiten und deinen Kommentar
warum sagte Sie nicht die perfekte Art und Weise ?haben Sie aus irgendeinem Grund ?
Um genau zu sein, es nicht unterstützt, ist mapping gespeicherten Prozeduren .NET-Methoden. Mit Sie, und wickelte einen Anruf zu
SqlQuery
(mit der SP-Namen als parameter) in ein repository-Methode ist möglich (msdn.microsoft.com/en-US/data/jj592907). Nicht der perfekte Weg ist, aber möglich...Tatsächlich, ich denken Sie Sie meinen, ist, dass es unterstützt keine Zuordnung der EF-Modell zu gespeicherten Prozeduren. Diese wird behandelt in der v6. Ordnen Sie eine gespeicherte Prozedur auf ein Objekt, und Sie können anzeigen, dass sproc auf eine Methode (ie wickeln Sie es). Aber das ist weitgehend ein manueller Prozess, der im code zuerst.
ich googeled aber ich kann nicht finden, eine Probe verwenden, speichern Sie die Prozedur Dank für Bearbeiten und deinen Kommentar
warum sagte Sie nicht die perfekte Art und Weise ?haben Sie aus irgendeinem Grund ?
InformationsquelleAutor sara Sodagari | 2013-07-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihrer generischen repository hinzufügen
Dann rufen Sie es mit jedem unitofwork/repository wie
Sorry, Sie sind richtig, es sollte
_unitOfWork.ProductRepository.ExecWithStoreProcedure
T kommen ausProductRepository : GenericRepository<Product>
Aber was, wenn Sie haben eine SP, die nicht die Rückkehr der Person Ihrer repository-maps? Zum Beispiel, meine SP kann die Rückgabe von Daten, Tabellen-joins oder einfach gibt einen integer-Wert namens "Ergebnis". In diesem Szenario wird im obigen Beispiel mit einem Produkt, das Unternehmen hätte die Unzureichende und brechen die Interface-Segregation-Prinzip. Irgendwelche Ideen?
möchte sehen, ob es irgendwelche Antworten auf die oben commment
Dies ist nur zum aufrufen einer gespeicherten Prozedur, und dies wird sich nicht auf UOW.
InformationsquelleAutor sunil
Sie sollten nicht versuchen SPs mit UoW/Repository pattern, weil Sie schwer zu kontrollieren im code und oft keine Karte wieder auf den gleichen entity-Typ. UoW-und Repository-Muster sind besser geeignet, um mit ADO.NET direkt und nicht Entity Framework, als EF ist bereits ein Repository pattern. Ich würde vorschlagen, CQRS, als eine bessere Muster bei der Verwendung von SPs. Ausarbeitung auf die Antwort von @sunil und meinen Kommentar dazu habe ich eine Klasse, die speziell für die Handhabung von gespeicherten Prozeduren. Es ist leicht zu spotten und auch noch zu testen.
Natürlich wird er nicht. SPs nicht halten UoW-pattern als UoW-pattern ist für ORMs, nachverfolgen von änderungen und Vorgänge in der Masse. Diese Schnittstelle ist ein hilfreiches Konzept für die Trennung von SP Ausführung von ORM-Logik können änderungen verfolgen. Bei der Beantwortung der OPs-Frage, sollten Sie nicht verwenden die SPs mit UoW-pattern. SPs sind wirklich nicht geeignet, um das Repository-pattern und sind wahrscheinlich besser geeignet zu CQRS.
Aber die Frage, die gestellt wird: Wie kann ich gespeicherte Prozeduren verwenden mit generischen repository und unit of work Pattern?
Und meine Antwort war: Sie sollten nicht.
Ich denke, Sie sollten entfernen Sie Ihre Bearbeiten, denn deine Antwort hat nun falsche info und die Menschen downvote Sie. Wenn ich du wäre, würde ich nur das: UOW mit gespeicherten Prozeduren müssen-Handbuch Transaktion behandeln. Dann weiter mit Ihrer Antwort, wie Sie vor dem Bearbeiten.
InformationsquelleAutor Chris Paton
Für Generisches Repository Hinzufügen :
Und Sie müssen nur senden Sie den Namen der Gespeicherten Prozedur und dem array von Parametern :
InformationsquelleAutor Anas Al-Qudah
ist dies funktionierte in meinem Fall
und die unitofwork-Methode
InformationsquelleAutor dewelloper