Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# EF Core 2使用输出参数执行存储过程_C#_Entity Framework Core - Fatal编程技术网

C# EF Core 2使用输出参数执行存储过程

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

为什么没有返回输出值

使用EFCore2(2.1.0-preview-final)作为通过代码优先建模管理模式的平台,我想添加其他数据库对象,如SPs。这本身就是一个过程,但是,本主题下的挑战是使用context.Database.ExecuteSqlCommandAsync()执行SP并检索输出参数值

这是成功执行SP的代码,但从未返回输出值。您可能认为设置参数的方向就足够了

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关键字

,后见之明提供了解决方案,但我的搜索结果中没有出现它的名称(标题)