У меня есть хранимая процедура в 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 (результат задачи)
Что я здесь ошибаюсь? Пожалуйста, кто-нибудь, помогите мне.
.SingleAsync()
на.ToListAsync()
. - person Ivan Stoev   schedule 03.12.2019