Använd följande steg för att lösa problemet:
- Du måste importera den lagrade proceduren som en funktion. Högerklicka på arbetsytan för din Entity-modell och välj
Add -> Function Import
. - I dialogrutan Lägg till funktionsimport anger du namnet som du vill att din lagrade procedur ska refereras till i din modell, till exempel
Search_Products
, välj din procedur från rullgardinsmenyn och välj returvärdet för proceduren som ska varaEntities
och väljProducts
från rullgardinsmenyn. -
Sedan i koden bakom:
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();
Anledningen till att du får -1
för resultatet är att Entity Framework inte kan stödja Stored Procedure Return-värden direkt. Jag tror att stödet för returvärden för lagrade förfaranden beror på versionen av Entity-ramverket. Entity Framework har inte heller stöd för omfattande lagrade procedurer eftersom det är en ORM, inte en SQL-ersättning.