EF Core 8 中具有多个参数的存储过程

问题描述 投票:0回答:1

我正在尝试使用具有多个参数的存储过程,但我不断从 API 收到 500 响应。该存储过程返回一个字符串结果并采用 3 个 varchar(30) 参数。

存储过程调用:

string Item1 = "123";
DateTime Item2 = DateTime.Now.AddDays(-3);
DateTime Item3 = DateTime.Now;

var result = await context.Set<string>().FromSqlInterpolated
            ($"EXECUTE proc @item1={Item1}, @item2={Item2.ToString()}, @item3={Item3.ToString()}")
            .FirstOrDefaultAsync();

任何帮助将不胜感激,谢谢!

sql asp.net-mvc api ef-core-8.0
1个回答
0
投票

带参数的FromSqlInterpolated的正确用法:

  1. 确保您以 EF Core 正确映射参数的方式传递参数。

  2. FromSqlInterpolated 自动处理 SQL 注入保护并确保参数格式正确。

    string Item1 = "123";
    DateTime Item2 = DateTime.Now.AddDays(-3);
    DateTime Item3 = DateTime.Now;
    
    var result = await context.Set<string>().FromSqlInterpolated(
        $"EXECUTE proc @item1={Item1}, @item2={Item2}, @item3={Item3}")
        .AsAsyncEnumerable()
        .FirstOrDefaultAsync();
    
© www.soinside.com 2019 - 2024. All rights reserved.