c# - 如何使用 ExecuteSqlInterpolatedAsync() 在 EF Core 3.0 中使用输出参数

标签 c# entity-framework asp.net-core

Microsoft doesn't have any current documentation on output parameters, just normal ones .我将 .Net Core 3.0 与 EF Core 3.0 一起使用,并尝试从我的存储过程中获取输出参数。代码如下:

var output=""
await _context.Database.ExecuteSqlInterpolatedAsync(
$"EXEC dbo.InsertTest @param1={"test"},@param2={"test2"}, @param3={output});

我不知道的是如何构造3.1中的新api来指定输出参数。我想知道是否有人对此有任何文档或已在新更新中完成此操作。

提前致谢。

最佳答案

感谢尤金让我走上正轨。如果有人偶然发现同样的问题:
要在 3.0 中成功获取输出参数,必须将输出参数具体定义为 SqlParameter(),然后包含单词“OUT”你的变量。
这是使用 ExecuteSqlInterpolated() 的示例

var output = new SqlParameter();
output.ParameterName = "@ID";
output.SqlDbType = SqlDbType.Int;
output.Direction = ParameterDirection.Output;

await _context.Database.ExecuteSqlInterpolated(
"EXEC dbo.InsertTest @param1={'test'},@param2={'test2'}, @param3={output} OUT");
这是使用 ExecuteSqlRawAsync() 的示例
var output = new SqlParameter();
output.ParameterName = "@ID";
output.SqlDbType = SqlDbType.Int;
output.Direction = ParameterDirection.Output;

await _context.Database.ExecuteSqlRawAsync(
"EXEC dbo.InsertTest @param1={0},@param2={1}, @param3={3} OUT", param1,param2,output);

关于c# - 如何使用 ExecuteSqlInterpolatedAsync() 在 EF Core 3.0 中使用输出参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60382040/

相关文章:

c# - 极稀疏数组的实现

asp.net-core - 为什么我不应该使用 IFormFile 进行大型上传

c# - System.IO.FileNotFoundException : The network path was not found. 在 Windows 7 上使用 DirectoryEntry 对象时出现异常

c# - List.Contains 是否完全等同于 List.IndexOf?

c# - 使用 Entity Framework 6 的 MySQL 的正确提供程序定义是什么?

c# - EF 事务和异步

asp.net-mvc - 使用 Entity Framework 我只想包含第一个子对象而不是子的子(子的子)

rest - Keycloak UMA授权REST API需要发送数千个请求

c# - .NET Core SDK 的错误 : Version 5. 0.10 0-alpha1-014696 需要至少版本 16.3.0 的 MSBuild

c# - WPF 文本框不接受删除键