使用 DbContext 将参数传递给存储过程

Passing parameter to Stored Procedure using DbContext

我有一个接受一个字符串参数的存储过程,下面是我的代码

var databaseContext = (DbContext)this.ManagementContext;
databaseContext.Database.Connection.Open();
using (var command = databaseContext.Database.Connection.CreateCommand())
{
command.CommandText = "StoredProcName";
command.CommandType = CommandType.StoredProcedure;
DbParameter param = command.CreateParameter();
param.DbType = DbType.String;
param.Direction = ParameterDirection.Input;
param.Value = "Vikash";
command.Parameters.Add(param);
using (var reader = command.ExecuteReader())

我的存储过程没有在参数中获取值。

如果您的存储过程名为 "StoredProcName",并使用名为 "Para1" 的参数执行。

var executedResult =
            ((IObjectContextAdapter) this).databaseContext.ExecuteStoreCommand(
                "StoredProcName @Para1", "Vikash");

然后,您将在 "executedResult" 中获得存储过程结果。

您在代码中遗漏了 ParameterName。试试这个,

        using (var ctx = new StOflowContext())
        {
            ctx.Database.Connection.Open();
            using (var command = ctx.Database.Connection.CreateCommand())
            {
                command.CommandText = "StoredProcedureName";
                command.CommandType = CommandType.StoredProcedure;

                DbParameter param = command.CreateParameter();
                param.ParameterName = "@paramName";
                param.DbType = DbType.String;
                param.Direction = ParameterDirection.Input;
                param.Value = "Vikash";

                command.Parameters.Add(param);
                using (var reader = command.ExecuteReader())

                { 
                    while(reader.Read())
                    {
                    }
                }
            }
        }

我试过这种方法,效果很好。

var dateParameter = new SqlParameter { ParameterName = "CastID", Value = castMember, DbType = DbType.String, Direction = ParameterDirection.Input };
                    command.Parameters.Add(dateParameter);