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

时间:2016-10-24 00:24:28

标签: c# sql-server entity-framework stored-procedures

我在我的项目中使用sql-server 2012。

我有存储过程,我在名为ExecuteSqlCommand的实体框架6方法的帮助下触发并将参数传递给存储过程。

 _context.database.ExecuteSqlCommand("SP_GetRecords", here all params)

我尝试发送到存储过程的一个参数是整数列表。

我是advised在sql-server上创建表值参数并传递给它的数组或列表。

但是不知道如何使用ExecuteSqlCommand方法将此列表或整数数组传递给表值参数。

知道如何在ExecuteSqlCommand内传递列表或数组类型吗?

2 个答案:

答案 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();
    }

这就是全部