问题:
开发人员在使用实体框架时从存储过程中检索数据时遇到困难(EF),导致空数据集 (-1),而不是预期的数据。
存储过程:
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();
解决方案:
要解决此问题,请按照以下步骤操作步骤:
将存储过程导入为函数:
更新背后的代码:
将现有代码替换为以下:
var db = new MyEntities(); var TEST_SEARCH_TERM = "product"; var result = db.Search_Products(TEST_SEARCH_TERM); // Search_Products is the name specified in the Function Import dialog MyGridView.DataSource = result; MyGridView.DataBind();
通过将存储过程作为函数导入,实体框架可以正确检索并返回存储过程中的数据。
以上是如何使用实体框架从存储过程中检索数据而不获取空数据集?的详细内容。更多信息请关注PHP中文网其他相关文章!