2012-05-03 23 views
0

.NETのストアドプロシージャを.NETから呼び出すと、パラメータの1つにNULL値を受け取ります。私は下から私のパラメータリストを構築し、私はDBNull.ValueをVisual Studioの{}の値を見て設定するとエラーが発生し続ける。なぜこれが誤りであるのか分かりませんが、理由の詳細なメッセージはありません。MySQL .NETコネクタとNull値

protected IEnumerable<MySqlParameter> BuildParameterList(IEnumerable<KeyValuePair<string, object>> parameters) 
     { 
      return parameters.Select(parameter => new MySqlParameter(parameter.Key, parameter.Value ?? DBNull.Value) 
                 { 
                  IsNullable = parameter.Value == null 
                 }); 
     } 

答えて

0

このように修正しました。 MySQLはnullのデフォルトのデータ型であるAnsiStringが好きではないようです。

protected IEnumerable<MySqlParameter> BuildParameterList(IEnumerable<KeyValuePair<string, object>> parameters) 
     { 
      foreach (var parameter in parameters) 
      { 
       var mysqlParameter = new MySqlParameter(parameter.Key, parameter.Value ?? DBNull.Value) 
           { 
            IsNullable = parameter.Value == null 
           }; 

       if(parameter.Value == null && mysqlParameter.DbType == DbType.AnsiString) 
       { 
        mysqlParameter.DbType = DbType.String; 
       } 


       yield return mysqlParameter; 
      } 
     }