Sử dụng các bước sau để giải quyết vấn đề này:
- Bạn cần Nhập thủ tục đã lưu trữ dưới dạng một Hàm. Nhấp chuột phải vào vùng không gian làm việc của mô hình Thực thể của bạn và chọn
Add -> Function Import
. - Trong hộp thoại Thêm chức năng nhập, hãy nhập tên bạn muốn quy trình đã lưu trữ của mình được tham chiếu đến trong mô hình của bạn, ví dụ:
Search_Products
, chọn thủ tục của bạn từ danh sách thả xuống và chọn giá trị trả về của thủ tục làEntities
và chọnProducts
từ danh sách thả xuống. -
Sau đó, trong đoạn mã đằng sau:
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();
Lý do bạn nhận được -1
kết quả là Entity Framework không thể hỗ trợ các giá trị được lưu trữ trong thủ tục Trả về các giá trị ra khỏi hộp. Tôi nghĩ rằng việc hỗ trợ các giá trị trả về thủ tục được lưu trữ phụ thuộc vào phiên bản của khung thực thể. Ngoài ra Entity Framework không có hỗ trợ thủ tục được lưu trữ phong phú bởi vì nó là ORM, không phải là SQL thay thế.