Verwenden Sie die folgenden Schritte, um dieses Problem zu lösen:
- Sie müssen die gespeicherte Prozedur als Funktion importieren. Klicken Sie mit der rechten Maustaste auf den Arbeitsbereich Ihres Entitätsmodells und wählen Sie
Add -> Function Import
. - Geben Sie im Dialogfeld "Funktionsimport hinzufügen" den Namen ein, auf den Ihre gespeicherte Prozedur in Ihrem Modell verwiesen werden soll, beispielsweise
Search_Products
, wählen Sie Ihre Prozedur aus der Dropdown-Liste und wählen Sie den Rückgabewert der Prozedur alsEntities
und wählen SieProducts
aus der Dropdown-Liste. -
Dann im Code dahinter:
var db = new MyEntities(); var TEST_SEARCH_TERM = "product"; var result = db.Search_Products(TEST_SEARCH_TERM);//Search_Products is the name that you specified in Function Import dialog MyGridView.DataSource = result; MyGridView.DataBind();
Der Grund, warum Sie -1
erhalten Das Ergebnis ist, dass Entity Framework keine Rückgabewerte für gespeicherte Prozeduren standardmäßig unterstützen kann. Ich denke, die Unterstützung von Rückgabewerten gespeicherter Prozeduren hängt von der Version des Entity-Frameworks ab. Außerdem bietet Entity Framework keine umfangreiche Unterstützung für gespeicherte Prozeduren, da es sich um ein ORM und nicht um einen SQL-Ersatz handelt.