テーブル値型のSqlParameterを作成する簡単なコードがあります。与えられたコードは.NET 4.0でうまく動作します。 問題はMONO CS(3.12.0)であり、MONOで同じコードを単純にコンパイルすることはできません。私は、このエラーを与えてテーブルvalued MONO csのパラメータ問題
static SqlParameter GetDataTableParam(string _tableName, DataTable _dt)
{
SqlParameter tValue = new SqlParameter();
tValue.ParameterName = "@dr" + _tableName; //@drFactory
tValue.SqlDbType = SqlDbType.Structured;
tValue.Value = _dt;
tValue.TypeName = string.Format("dbo.{0}Item", _tableName); //MONO CS is giving error at this line
return tValue;
}
モノコンパイラ:
Error CS1061: Type `System.Data.SqlClient.SqlParameter' does not contain a definition for `TypeName' and no extension method `TypeName' of type `System.Data.SqlClient.SqlParameter' could be found. Are you missing an assembly reference? (CS1061)
与えられたコードは、単にTableValuedタイプのパラメータを作成し、SQL INSERT文にデータテーブルを渡そうとしています。
ストアドプロシージャを使用するとエラーが解決することがわかりますが、私のケースでは、各テーブルごとにMERGE挿入SPを作成することはできません。
この問題の回避策がある場合は、私を助けてください。
注:MONO System.Data.SqlClient.SqlParameter
は、TypeName
プロパティを持たないことが知られています。私は、このプロパティを削除した場合、それは罰金コンパイルするが、実行時エラーを与える:
The table type parameter '@drFactory' must have a valid type name.