この SqlParameter のリストにオブジェクトを割り当ててから SqlCommand を実行しようとしていますが、オブジェクトの 1 つを SqlDbType に変換できなかったという例外がスローされます。できれば、そのようなオブジェクトをパラメーター コレクション リストに追加する前に処理したいと考えています。では、パラメータ リストに追加される値が適切な値かどうかを確認するにはどうすればよいでしょうか。どのプロパティを確認する必要がありますか?
ここに私のコードがあります:
bool Submit(Progs progs, CommandType commandType, string commandText)
{
try
{
List<SqlParameter> paramCollection = new List<SqlParameter>();
foreach(Prog p in progs)
{
SqlParameter spTemp = new SqlParameter { ParameterName = p.Name , Value = p.Value};
paramCollection.Add(spTemp);
using (SqlConnection con = GetConnection())
{
SqlCommand cmd = new SqlCommand { CommandType = commandType, CommandText = commandText, Connection = con };
con.Open();
cmd.Parameters.AddRange(paramCollection ); // Exception is thrown from this line
cmd.ExecuteNonQuery();
}
return true;
}
catch(Exception exc)
{
return false;
}
}
スローされる例外は次のとおりです。 オブジェクト型 sol2.CodeBase.BL.Letter[] から既知のマネージド プロバイダー ネイティブ型へのマッピングは存在しません。
PS : ParamaterIsSqlType と呼ばれるSqlParameterのプロパティがあります(はい、paramAter であり、paramEter ではありません)。これは実行時 (つまり、次の行にブレークポイントがある spTemp を検査するとき) にのみ表示され、常に false に設定されますか? これはどのような種類のプロパティなので、実行時にのみ表示されますか??? また、この「ParamaterIsSqlType」が示す値は何ですか?