[英]Passing parameters to stored procedure using EF6
I use sql-server 2012 in my project. 我在项目中使用sql-server 2012。
I have stored procedure, I fire and passing parameters to the stored procedure with help of entity framework 6 method called ExecuteSqlCommand
. 我已经有了存储过程,我借助称为
ExecuteSqlCommand
的实体框架6方法将参数激发并将参数传递给存储过程。
_context.database.ExecuteSqlCommand("SP_GetRecords", here all params)
One of the parameters that I try to sent to stored procedure is list of integers. 我尝试发送到存储过程的参数之一是整数列表。
I was advised to create table-valued parameters on sql-server and pass to it array or list. 建议我在sql-server上创建表值参数,然后将其传递给数组或列表。
But don't know how to pass this list or array of integers using ExecuteSqlCommand
method to table-valued parameter. 但是不知道如何使用
ExecuteSqlCommand
方法将此表或整数数组传递给表值参数。
Any idea how to pass list or array type inside ExecuteSqlCommand
? 任何想法如何在
ExecuteSqlCommand
内部传递列表或数组类型?
Create your parameter 创建参数
SqlParameter parameter = new SqlParameter();
parameter.ParameterName = "@myData";
parameter.SqlDbType = System.Data.SqlDbType.Structured;
parameter.TypeName = "dbo.YourCustomTableType";
parameter.Value = myDataTable;
Execute as usual 照常执行
ctx.Database.ExecuteSqlCommand("EXEC SP_GetData @myData", parameter);
We must create NpgsqlParameter and set parametr's name and type 我们必须创建NpgsqlParameter并设置参数的名称和类型
var param1 = new NpgsqlParameter("param1", NpgsqlDbType.Array | NpgsqlDbType.Bigint) { Value = Enumerable.Range(0, 10).ToArray()};
var param2 = new NpgsqlParameter("param2", NpgsqlDbType.Bigint){ Value = 1}
return DataSet
.FromSql("select function_name(@param1, @param2) as \"SomeName\"", parameters: new object[] { param1, param2 })
.FirstAsync();
}
And that's all 就这样
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.