首页 >后端开发 >C++ >如何使用实体框架从存储过程中检索数据而不获取空数据集?

如何使用实体框架从存储过程中检索数据而不获取空数据集?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-03 10:25:41220浏览

How to Retrieve Data from a Stored Procedure Using Entity Framework Without Getting an Empty Dataset?

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

问题:
开发人员在使用实体框架时从存储过程中检索数据时遇到困难(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();

解决方案:
要解决此问题,请按照以下步骤操作步骤:

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

    • 右键单击实体模型的工作区并选择“添加”-> “函数导入。”
    • 输入所需的存储过程名称(例如,Search_Products)并从下拉列表中选择该过程。
    • 将返回值设置为“Entities”并选择“产品”作为实体
  2. 更新背后的代码:

    • 将现有代码替换为以下:

      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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn