首页 > 后端开发 > C++ > 如何在 ASP.NET 中使用实体框架成功从存储过程中检索数据?

如何在 ASP.NET 中使用实体框架成功从存储过程中检索数据?

DDD
发布: 2024-12-29 00:10:10
原创
491 人浏览过

How Can I Successfully Retrieve Data from a Stored Procedure Using Entity Framework in ASP.NET?

使用实体框架从存储过程中检索数据

在 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 数据集。要解决此问题并成功检索数据,应遵循以下步骤:

  1. 将存储过程作为函数导入:

    • 右键单击实体模型的工作区并选择“添加”-> “函数导入。”
  2. 配置函数导入:

    • 在“添加函数导入”对话框中,提供函数的名称,例如“Search_Products”。
    • 选择从下拉列表中选择“SearchProducts”存储过程。
    • 将过程的返回值设置为“Entities”,然后从下拉列表中选择“Products”。
  3. 修改代码后面:

    • 将给定代码片段中的代码更改为:
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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板