Subsic: MaxLength of TableColumn (تجاوز)
-
21-09-2019 - |
سؤال
لذلك ، نحن نستخدم Subsic كـ DAL/ORM لدينا لأحد مشاريعنا. كان كل شيء يعمل بسلاسة (قاعدة البيانات موجودة بالفعل ، لذلك استخدمنا Subsond فوقها) ، ومع ذلك ، في بعض الأحيان سنواجه استثناء يقول إن شيئًا ما مثل عدد صحيح يتجاوز طوله القصير. في هذا المثال ، تم توقيع حقل MySQL الخاص بنا (4). التي ، وفقًا لوثائق MySQL ستسمح بمجموعة مما يلي:
-2147483647 إلى 2147483647.
الآن ، سؤالي ، كيف يتم إملاء MaxLength في Subsic؟ هل هو عدد الأرقام؟ لأن هذا يعني أنه سيسمح فقط -9999 إلى 9999 ، صحيح؟ هذا يبدو وكأنه تباين كبير إلى حد ما ، وآمل أن يكون هذا هو الحال ، وإلا سيكون لدينا الكثير من المشكلات الأخرى.
شكرا ، -steve
المحلول
باستخدام عاكس ، والحفر لأسفل إلى وظيفة حفظ ActivereCord (التي تستدعي ValityTeColumnStings):
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));
}
تم ضبط العلم على صحيح إذا كان المتغير فارغًا. لذا ، نعم ، إنها تنطلق من عدد الأرقام (انظر: ToString (). الطول). لا يبدو أن هذا أمر منطقي ، لأن MySQL لا تستخدم خاصية الطول لنوع البيانات لتحديد عدد الأرقام للقيم القائمة على عدد صحيح.
هذا هو Subsic 2.2.