EF Core 存储过程 FromSqlRaw 不提供更新的值

sqlserver

1个回答

写回答

wveikh.

2025-07-09 23:22

+ 关注

Total
Total

使用 EF Core 存储过程 FromSqlRaw 执行存储过程时,一般情况下只能获取返回的结果,无法直接更新相关的值。本文将介绍如何使用 FromSqlRaw 方法执行存储过程,并提供一个实际案例代码进行演示。

什么是 EF Core 存储过程 FromSqlRaw

EF Core 是一个轻量级的、跨平台的对象关系映射 (ORM) 框架,它提供了多种操作数据库的方式。其中,FromSqlRaw 方法是 EF Core 提供的一种执行原生 SQL 查询的方法。通过 FromSqlRaw 方法,我们可以直接执行存储过程并获取结果。

案例代码

假设我们有一个存储过程,用于根据用户提供的订单号查询订单信息并返回。我们可以使用 FromSqlRaw 方法执行该存储过程,并将结果映射为实体对象。

首先,我们需要定义一个实体类来表示订单信息:

csharp

public class Order

{

public int OrderId { get; set; }

public string OrderNumber { get; set; }

public decimal TotalAmount { get; set; }

}

接下来,我们需要执行存储过程并获取结果。假设存储过程的名称为 "GetOrderInfo",接受一个订单号作为参数,并返回订单的相关信息。

csharp

var orderNumber = "ABC123";

var orders = dbContext.Orders.FromSqlRaw("EXEC GetOrderInfo {0}", orderNumber).ToList();

在上述代码中,我们通过 FromSqlRaw 方法执行存储过程,并将订单号作为参数传递给存储过程。最后,通过 ToList 方法将查询结果转换为列表。

无法直接更新的值

需要注意的是,FromSqlRaw 方法只能获取存储过程的返回结果,无法直接更新相关的值。这是因为存储过程的执行是在数据库服务器上进行的,EF Core 无法直接追踪和更新这些值。

如果需要更新相关的值,我们可以考虑使用其他的方法,如执行原生的 SQL 更新语句或调用其他的存储过程。此时,我们可以使用 DbContext.Database.ExecuteSqlRaw 方法执行原生的 SQL 更新语句,或者使用 DbContext.Database.ExecuteSqlInterpolated 方法执行带有插值参数的原生 SQL 更新语句。

本文介绍了如何使用 EF Core 存储过程 FromSqlRaw 方法执行存储过程,并提供了一个实际案例代码进行演示。通过 FromSqlRaw 方法,我们可以方便地执行存储过程并获取结果。然而,需要注意的是,FromSqlRaw 方法只能获取返回的结果,无法直接更新相关的值。如果需要更新相关的值,我们可以考虑使用其他的方法,如执行原生的 SQL 更新语句或调用其他的存储过程。

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号