在Entity Framework Core 2.0中执行存储过程

Pra*_*p H 8 c# entity-framework-core asp.net-core ef-core-2.0

有一个方案来执行存储过程并读取EF Core中的返回值,返回单个值.

我尝试使用此代码,但这不起作用.我理解这ExecuteSqlCommand对select不起作用,只能用于更新数据库.

var test =  context.Database.ExecuteSqlCommand("SPName");
Run Code Online (Sandbox Code Playgroud)

存储过程只有一个select语句 Select 'somevalue'

寻找任何替代方法来获取存储过程返回的数据.

gra*_*nts 14

DbCommand cmd = ctx.Database.GetDbConnection().CreateCommand();
cmd.CommandText = "SPName";
cmd.CommandType = CommandType.StoredProcedure;

    if (cmd.Connection.State != ConnectionState.Open)
    {
        cmd.Connection.Open();
    }

return await cmd.ExecuteNonQueryAsync();
Run Code Online (Sandbox Code Playgroud)

这是一篇关于此的帖子:https: //nodogmablog.bryanhogan.net/2016/07/entity-framework-core-and-calling-a-stored-proceduce/#comment-60582


Pra*_*p H 7

能用以下代码解决我的问题.这是基于以下回复中给出的建议.

using (var command = context.Database.GetDbConnection().CreateCommand())
    {
        command.CommandText = "StoredProcedureName";
        command.CommandType = CommandType.StoredProcedure;

        context.Database.OpenConnection();

        var dataReader = command.ExecuteReader();

        if (dataReader.Read())
        {
            string _test = dataReader.GetString(dataReader.GetOrdinal("ColumnName"));
        }
    }
Run Code Online (Sandbox Code Playgroud)