Използвайте следните стъпки, за да разрешите този проблем:
- Трябва да импортирате съхранената процедура като функция. Щракнете с десния бутон върху областта на работното пространство на вашия модел на обект и изберете
Add -> Function Import
. - В диалоговия прозорец Добавяне на функция за импортиране въведете името, към което искате вашата съхранена процедура да се отнася във вашия модел, например
Search_Products
, изберете вашата процедура от падащия списък и изберете връщаната стойност на процедурата да бъдеEntities
и изберетеProducts
от падащия списък. -
След това в кода зад:
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();
Причината, поради която получавате -1
тъй като резултатът е, че Entity Framework не може да поддържа стойности за връщане на запаметени процедури извън кутията. Мисля, че поддръжката на връщаните стойности на съхранената процедура зависи от версията на Entity Framework. Също така Entity Framework няма богата поддръжка на съхранени процедури, тъй като е ORM, а не SQL заместител.