سؤال

وأنا لم تكن قد عملت مع المعلمات في ADO.Net كثيرا. أنا أكتب مخصص صافي موفر البيانات (على غرار SqlClient)، ويجب أن تنفذ الملكية IsNullable في صفي معلمة، الذي يرث من DbParameter. موفر البيانات بلدي لن تدعم الإجراءات المخزنة، لذلك لن أكون إلا دعم المدخلات (نمط استبدال) معلمات.

وومستندات MSDN غير واضحة بدلا من ذلك على وظائف IsNullable، مشيرا إلى "يحصل أو تعيين القيمة تشير إلى ما إذا كانت المعلمة تقبل القيم الخالية". غوغلينغ حتى تتحول الكثير من الناس الخلط حول ما يفعل IsNullable، معتبرا أن وضع IsNullable إلى false لا تمنعهم من استخدام المعلمة و، كما كان يتوقع قيمة فارغة.

وعلى هذا الأساس، وأنا أفكر أنه ربما كان من الممتلكات IsNullable تتعلق إلى استخدام مع إجراء مخزن، وجود أو عدم المعلمة الإجراء المخزن هي قيم الفارغة، وليس ما إذا كانت قيمة المعلمة يمكن أن تكون فارغة.

في هذه الحالة، لأنني لن يكون قد الإجراءات المخزنة، ويمكن تنفيذ بلدي يكون مجرد:

        public override bool IsNullable { get { return false; } set {} }

لتجنب الاضطرار الى عزف حولها مع بعض رمز اختبار لمعرفة كيفية تنفيذ SqlParameter للأعمال IsNullable، ويهمني ان نقدر أنه إذا شخص من ذوي الخبرة في كتابة التعليمات البرمجية باستخدام معلمات يمكن أن يفسر IsNullable.

هل كانت مفيدة؟

المحلول

والخاصية IsNullable هي إعلامية. ومن المفيد عندما جزء واحد من التعليمات البرمجية يخلق المعلمة وآخر يستخدم فعلا. على سبيل المثال، المعلمة قد تكون مشتقة تلقائيا من قاعدة البيانات، وفي هذه الحالة فإنه من المفيد للمبرمج لتكون قادرة على معرفة ما إذا كان أو لا قيمة فارغة من المرجح أن يكون مقبولا.

وهذا هو فهمي للممتلكات IsNullable. أنا لا أعرف في الواقع من أية وثائق "تثبت" هذا هو الصحيح في الواقع.


ودعم هذا الرأي سيكون تنفيذ أوراكل الدرجة Oracle.DataAccess.Client.OracleParameter ، حيث حالتها مستندات:

<اقتباس فقرة>   

IsNullable

     

لا تدعم هذه الخاصية.

وبل هو حقيقة أن قيمة هذه الخاصية غير ذي صلة عند التواصل مع أوراكل 10 أو 11 أو 12، إما عن طريق السائق MS أو برنامج Oracle المذكورة.

والسلوك على قواعد بيانات أخرى قد تختلف بطبيعة الحال.

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