C# EF Core 2使用输出参数执行存储过程
为什么没有返回输出值 使用EFCore2(2.1.0-preview-final)作为通过代码优先建模管理模式的平台,我想添加其他数据库对象,如SPs。这本身就是一个过程,但是,本主题下的挑战是使用context.Database.ExecuteSqlCommandAsync()执行SP并检索输出参数值 这是成功执行SP的代码,但从未返回输出值。您可能认为设置参数的方向就足够了C# EF Core 2使用输出参数执行存储过程,c#,entity-framework-core,C#,Entity Framework Core,为什么没有返回输出值 使用EFCore2(2.1.0-preview-final)作为通过代码优先建模管理模式的平台,我想添加其他数据库对象,如SPs。这本身就是一个过程,但是,本主题下的挑战是使用context.Database.ExecuteSqlCommandAsync()执行SP并检索输出参数值 这是成功执行SP的代码,但从未返回输出值。您可能认为设置参数的方向就足够了 public async Task AddAsync(Models.Filename entity) { Sq
public async Task AddAsync(Models.Filename entity)
{
SqlParameter name = new SqlParameter("@Name", entity.Name);
SqlParameter idOut = new SqlParameter
{
ParameterName = "@Id",
SqlDbType = System.Data.SqlDbType.BigInt,
Direction = System.Data.ParameterDirection.Output
};
using (var db = new MetaDataDbContext())
{
await db.Database.ExecuteSqlCommandAsync("[dbo].[AddFilename] @Name, @Id", name, idOut);
}
entity.Id = Convert.ToInt64(idOut.Value);
}
解决此问题所需的只是将T-SQL语句更改为“
”[dbo].[AddFilename]@Name,@Id OUTPUT”
看起来很有希望,但是它遗漏了一个关键部分,即T-SQL部分必须包含目标参数的OUTPUT关键字
,后见之明提供了解决方案,但我的搜索结果中没有出现它的名称(标题)
嗯