亜音速:TableColumnのののMaxLength(超過)
-
21-09-2019 - |
質問
そこで、我々は我々のプロジェクトの一つのための私達のDAL / ORMとして亜音速を使用しています。 (我々はそれの上に亜音速を使用して、データベースが既に存在していた)すべてがしかし、機会に私たちは、整数のようなものが最大長を超えていると言う例外に実行されます、スムーズに実行されています。この例では、私たちのMySQLのフィールドには、int型(4)署名です。これは、MySQLの説明によると、以下の範囲が可能になります:
-2147483647〜2147483647です。
MaxLengthは亜音速で決定されますかさて、私の質問、?それは、桁数ですか?その手段なので、それが唯一の正しい9999 -9999を、できるようになりますか?それはむしろ、巨大な矛盾のように思える、と私はそれがそうではありません願って、または他の我々は他の問題のトンを持っているつもりだ。
おかげで、 -Steve
解決
リフレクターを使用して、および(ValidateColumnSettingsを呼び出す)のActiveRecordの保存機能にドリルダウンします:
if ((!flag && (column.MaxLength > 0)) && ((column.DataType != DbType.Boolean) && (currentValue.ToString().Length > column.MaxLength)))
{
Utility.WriteTrace(string.Format("Max Length Exceeded {0} (can't exceed {1}); current value is set to {2}", column.ColumnName, column.MaxLength, currentValue.ToString().Length));
this.errorList.Add(string.Format(this.LengthExceptionMessage, str, column.MaxLength));
}
変数がNULLの場合、フラグがtrueに設定されています。だから、はい、それは桁数のオフ起こっている(参照:ToStringメソッド()長さを。)。 MySQLは、整数ベースの値の桁数を決定するために、データ型の長さプロパティを使用しないので、これは、いかなる意味をなすようには見えない。
このは亜音速の2.2です。
所属していません StackOverflow