سؤال

لذلك ، نحن نستخدم 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.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top