使用实体框架从存储过程中检索数据
在 Web 开发领域,经常需要在应用程序中填充数据集来自数据源。这就是实体框架发挥作用的地方,它提供了一个面向对象的接口来与数据库交互。但是,当从存储过程检索数据时,可能会遇到某些挑战。
考虑 SQL Server 中的以下存储过程:
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
尝试从此检索数据使用 Entity Framework 6.1.1 存储过程并填充 GridView 控件,以下 C# 代码可能是使用:
var db = new MyEntities(); var TEST_SEARCH_TERM = "product"; var result = db.SearchProducts(TEST_SEARCH_TERM); MyGridView.DataSource = result; MyGridView.DataBind();
但是,在 ASP.NET 应用程序中执行代码时,会发生异常,结果变量返回 -1 而不是所需的 IEnumerable 数据集。要解决此问题并成功检索数据,应遵循以下步骤:
将存储过程作为函数导入:
配置函数导入:
修改代码后面:
var db = new MyEntities(); var TEST_SEARCH_TERM = "product"; var result = db.Search_Products(TEST_SEARCH_TERM); // Replace "SearchProducts" with your chosen function name MyGridView.DataSource = result; MyGridView.DataBind();
此方法通过导入存储的过程作为实体框架模型中的函数,允许访问和执行它,并将返回值设置为 IEnumerable数据集。
需要注意的是,虽然实体框架提供了一种方便的与数据库交互的机制,但它对存储过程的支持是有限的,并且无法原生处理存储过程的返回值。
以上是如何在 ASP.NET 中使用实体框架成功从存储过程中检索数据?的详细内容。更多信息请关注PHP中文网其他相关文章!