gpt4 book ai didi

asp.net-core - 如何在EF Core 3.0中使用FromSqlInterpolated对多个参数执行存储过程?

转载 作者:行者123 更新时间:2023-12-01 06:13:44 25 4
gpt4 key购买 nike

我在Sql Server 2017中有一个存储过程,它具有三个参数。

CREATE PROCEDURE UpdateRestaurantInformation
@restaurantId nvarchar(max),
@restaurantName nvarchar(max),
@locationId int
AS
BEGIN
UPDATE Restaurants
SET RestaurantName = @restaurantName, LocationId = @locationId
WHERE RestaurantId = @restaurantId;

SELECT * FROM Restaurants WHERE RestaurantId = @restaurantId;
END

当我尝试使用下面的代码片段执行此存储过程时, 可以按预期方式工作
   SqlParameter param1 = new SqlParameter("@p0",restaurant.RestaurantId);
SqlParameter param2 = new SqlParameter("@p1", restaurant.RestaurantName);
SqlParameter param3 = new SqlParameter("@p2", restaurant.Location.LocationId);

var res = _context.Restaurants
.FromSqlRaw("UpdateRestaurantInformation @p0,@p1,@p2", param1, param2, param3)
.ToList();

但是当我尝试如下使用FromSqlInterpolated时:
var res = await _context.Restaurants
.FromSqlInterpolated(
$"UpdateRestaurantInformation {restaurant.RestaurantId}, {restaurant.RestaurantName}, {restaurant.Location.LocationId}")
.SingleAsync();

引发此异常:

SqlException:'@ p0'附近的语法不正确。
Microsoft.Data.SqlClient.SqlCommand + <> c.b__164_0(任务
结果)

我在这里误会什么?拜托,有人帮我。

最佳答案

因此,这是我从GitHub获得的解决方案。我要做的就是用注释中提到的@IvanStoev用ToList()替换SingleOrDefault()。

如果有人将来需要,我只是在这里添加。

var res = await _context
.Restaurants
.FromSqlInterpolated($"UpdateRestaurantInformation {restaurant.RestaurantId}, {restaurant.RestaurantName}, {restaurant.Location.LocationId}").ToListAsync();

return res.SingleOrDefault();

关于asp.net-core - 如何在EF Core 3.0中使用FromSqlInterpolated对多个参数执行存储过程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59151584/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com