我在我的项目中使用sql-server 2012。
我有存储过程,我在名为ExecuteSqlCommand
的实体框架6方法的帮助下触发并将参数传递给存储过程。
_context.database.ExecuteSqlCommand("SP_GetRecords", here all params)
我尝试发送到存储过程的一个参数是整数列表。
我是advised在sql-server上创建表值参数并传递给它的数组或列表。
但是不知道如何使用ExecuteSqlCommand
方法将此列表或整数数组传递给表值参数。
知道如何在ExecuteSqlCommand
内传递列表或数组类型吗?
答案 0 :(得分:4)
创建参数
SqlParameter parameter = new SqlParameter();
parameter.ParameterName = "@myData";
parameter.SqlDbType = System.Data.SqlDbType.Structured;
parameter.TypeName = "dbo.YourCustomTableType";
parameter.Value = myDataTable;
照常执行
ctx.Database.ExecuteSqlCommand("EXEC SP_GetData @myData", parameter);
答案 1 :(得分:2)
我们必须创建NpgsqlParameter并设置parametr的名称和类型
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();
}
这就是全部