Kann ich eine gespeicherte Prozedur von einer EntityDataSource aus aufrufen?

asp.net entity-framework stored-procedures

Frage

(ASP.net 3.5, C #, SQL Express 2008)

Ich möchte ein Webformular haben, in dem ich mit einem vom Benutzer eingegebenen Schlüsselwort nach "Lösungen" (meiner Tabelle) suchen kann, und nachdem das Ergebnis wieder angezeigt wird und eine GridView gefüllt wird.

Ich habe bereits Teile dieser Suche über eine gespeicherte Prozedur, die mit meinem Entity-Datenmodell verbunden ist. Auf dieser Seite habe ich eine EntityDataSource. Wie kann ich diese EntityDataSource-Daten aus meiner gespeicherten Prozedur abrufen?

Ich weiß, ich könnte das Ergebnis einfach über den Entity-Kontext abrufen (was funktioniert), und es an das Raster binden, aber wenn ich es nicht an die EntityDataSource ankoppelte, bekomme ich kein automatisches Paging und Sortieren (was ein anderes war) Kampf von mir in der Vergangenheit)

Akzeptierte Antwort

Versuchen Sie es mit dem Function Import .

  1. Klicken Sie mit der rechten Maustaste auf den EntitySet-Namen (den Überschriftenteil).
  2. Wählen Sie Hinzufügen-> Funktionsimport

Hier ist ein guter Blog-Post für Sie zum Auschecken. ADO.NET Entity Framework Tools: Gespeicherte Prozeduren von Guy Burstein

Update: Tut mir leid, ich habe den Teil über EntityDataSource verpasst, daher kenne ich keine Eigenschaft, die Zugriff auf eine Funktion hat, die aus dem EDS importiert wird, aber Sie können versuchen, die CommandText-Eigenschaft zu verwenden.

<asp:EntityDataSource ID="SolutionsDataSource" runat="server" 
    CommandText="DataModel.SearchFunction(@Keywords)"
    ConnectionString="name=AdventureWorksEntities">
    <CommandParameters>
        <asp:ControlParameter Name="Keywords" 
            ControlID="SearchTextbox" Type="String"/>
    </CommandParameters>
</asp:EntityDataSource>

Update: Nun, ich habe schlechte Neuigkeiten. Nachdem Sie Reflector verwendet haben , um tief in die EntityDataSource . Die EntityDataSourceView wird mit QueryBuilderUtils.ConstructQuery , die dann wiederum context.CreateQuery<T> . Was Sie zum Ausführen des Funktionsimports benötigen, ist ein Aufruf von context.ExecuteFunction<T> . Es scheint keine Unterstützung für ExecuteFunction in dieser Version zu geben, die Blogs, die ich gelesen habe, erwähnten zwar, dass es geplant war, aber es kam nicht in diese Version, ob es in zukünftigen Versionen möglich ist oder nicht nicht sagen

ObjectDataSource , würde ich empfehlen, eine ObjectDataSource , die Sie auf eine Art und Weise ObjectDataSource , die Paging, Sortieren usw. noch unterstützt. Wenn Sie eine ObjectDataSource-Frage zu diesem Thema öffnen, senden Sie mir einen Kommentar hier und ich schaue mich um.



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum