我試圖從數據庫上下文對象調用的動態SQL存儲過程(使用實體框架6.1.1)獲取內容表,以便填充GridView
控件。我無法檢索數據。使用實體框架從存儲過程獲取數據
這是存儲過程。這是一個關於存儲過程中的SQL注入的學生演示,所以我知道這是可注射的,它很好。
ALTER PROCEDURE dbo.SearchProducts
@SearchTerm VARCHAR(max)
AS
BEGIN
DECLARE @query VARCHAR(max)
SET @query = 'SELECT * FROM dbo.Products WHERE Name LIKE ''%' + @SearchTerm + '%'''
EXEC(@query)
END
的C#代碼後面我然後用它來執行存儲過程是:
var db = new MyEntities();
var TEST_SEARCH_TERM = "product";
var result = db.SearchProducts(TEST_SEARCH_TERM);
MyGridView.DataSource = result;
MyGridView.DataBind();
執行時,在Visual Studio中的數據庫資源管理器,存儲過程工作正常。但是當在正在運行的ASP.NET應用程序中執行時,由於result
返回-1
而不是包含存儲過程的SELECT產生的對象的IEnumerable
DataSet
,所以我在DataBind()
方法中出現異常。
如何檢索數據並填充我的GridView
?
在您的edmx中,轉到功能導入 - > SearchProducts,然後雙擊它。什麼是返回類型設置爲? – Vahlkron
返回類型未設置。這是(無)。 – mak
聽起來像它需要設置爲複雜。我可能會提出的唯一建議是,因爲我沒有EF,所以當我這樣做時,會給我提出問題,請將*改爲明確地在SP中選擇所需的列。也許EF看着這個來確定你的返回類型。然後更新您的EDMX,以便更改反映在EF中。 – Vahlkron