-1

SQLValue をオブジェクト プロパティに読み込もうとしていますが、「文字列が正しい形式ではありません」というエラーが表示されます。「ModifyBy」プロパティは null を許可するように設定されています。エラーを返すコードは次のとおりです (エラーをスローしている特定の行は "ModifyBy" 行です)。

 public historycrumb(SqlParameter[] param)
        {
            CreateBy = param.Single(sp => sp.ParameterName == "@CreateBy").SqlValue != DBNull.Value ? Convert.ToInt32(param.Single(sp => sp.ParameterName == "@CreateBy").SqlValue.ToString()) : (Int32?)null;
            CreateDateTime = Convert.ToDateTime(param.Single(sp => sp.ParameterName == "@CreateDateTime").SqlValue.ToString());
            ModifyBy = param.Single(sp => sp.ParameterName == "@ModifyBy").SqlValue != DBNull.Value ? Convert.ToInt32(param.Single(sp => sp.ParameterName == "@ModifyBy").SqlValue.ToString()) : (Int32?)null;
            ModifyDateTime = Convert.ToDateTime(param.Single(sp => sp.ParameterName == "@ModifyDateTime").SqlValue.ToString());
        }
4

1 に答える 1

1

SQLParameter.SQLValueリファレンス

パラメーター値の C# 型にアクセスするには、SQLParameter.Valueのみを使用します。少なくとも 2 番目の部分では、DBNull.value ではないことを確認しました (つまり、int である必要があります)。例えば

ModifyBy = param.Single(sp => sp.ParameterName == "@ModifyBy").SqlValue != DBNull.Value ? param.Single(sp => sp.ParameterName == "@ModifyBy").Value : (Int32?)null;

(注: 表示のためだけに改行します)

于 2013-05-16T19:38:06.687 に答える