Brug følgende trin til at løse dette problem:
- Du skal importere den lagrede procedure som en funktion. Højreklik på arbejdsområdet for din enhedsmodel, og vælg
Add -> Function Import
. - I dialogboksen Tilføj funktionsimport skal du indtaste det navn, du ønsker, at din lagrede procedure skal henvise til i din model, f.eks.
Search_Products
, vælg din procedure fra rullelisten, og vælg returværdien for proceduren til at væreEntities
og vælgProducts
fra rullelisten. -
Så i koden bag:
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();
Grunden til at du får -1
for resultatet er, at Entity Framework ikke kan understøtte Stored Procedure Return-værdier ud af boksen. Jeg tror, at understøttelse af returneringsværdier for lagrede procedurer afhænger af versionen af Entity framework. Entity Framework har heller ikke understøttelse af omfattende lagrede procedurer, fordi det er en ORM, ikke en SQL-erstatning.