2016-10-24 16 views
1

私のプロジェクトではsql-server 2012を使用します。EF6を使用してストアドプロシージャにパラメータを渡す

私はストアドプロシージャに、ExecuteSqlCommandと呼ばれるエンティティフレームワーク6メソッドの助けを借りて、プロシージャを実行しました。

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

私がストアドプロシージャに送信しようとするパラメータの1つは、整数のリストです。

私はadvisedでした.SQL Server上でテーブル値のパラメータを作成し、それを配列またはリストに渡しました。

しかし、ExecuteSqlCommandメソッドを使用してこのリストまたは整数の配列をテーブル値のパラメータに渡す方法がわかりません。

ExecuteSqlCommandの中にリストや配列タイプを渡す方法はありますか?

答えて

4

通常

ctx.Database.ExecuteSqlCommand("EXEC SP_GetData @myData", parameter); 
+0

reallだしなければなりません! 、それはとても簡単ですか? myDataをテーブル値のパラメータに渡すことはできますか? – Michael

+0

この行内:parameter.Value = myDataTable myDataTableのタイプは何ですか? – Michael

+0

DataTable(https://msdn.microsoft.com/en-us/library/system.data.datatable(v=vs.110).aspx) –

2

として実行

SqlParameter parameter = new SqlParameter(); 
parameter.ParameterName = "@myData"; 
parameter.SqlDbType = System.Data.SqlDbType.Structured; 
parameter.TypeName = "dbo.YourCustomTableType"; 
parameter.Value = myDataTable;  

あなたのパラメータを作成します。私たちは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(); 
    } 

を入力し、それがすべて

関連する問題