سؤال

لدينا الخاصة بنا ORM نستخدمها هنا ، وتوفير بقوة كتبته مغلفة من db الجداول.كما تسمح المكتوبة ضعيف المخصص SQL ليتم تنفيذها ، لكن هذه الأسئلة لا تزال تذهب من خلال نفس الفصل من أجل الحصول على قيم من قارئ البيانات.

في التغيير والتبديل تلك الفئة إلى العمل مع أوراكل مررنا مسألة مثيرة للاهتمام.هو أفضل من استخدام DBNull.قيمة أو فارغة?هل هناك أي فوائد استخدام DBNull.قيمة ؟ ويبدو من "الصحيحة" إلى استخدام null, وبما أننا قد فصل أنفسنا من DB العالم ، ولكن هناك آثار (لا يمكنك عمياء ToString() عندما تكون القيمة فارغة على سبيل المثال) لذلك بالتأكيد شيء يجب أن تتخذ قرارا واعيا حول.

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

المحلول

أجد أنه من الأفضل استخدام null, بدلا من DB null.

والسبب هو لأن كما قلت أنت فصل نفسك من DB العالم.

عموما هو ممارسة جيدة للتحقق من أنواع مرجع للتأكد من أنها ليست فارغة على أي حال.ستكون التحقق null لأشياء أخرى من البيانات DB و أجد أنه من الأفضل للحفاظ على الاتساق على نطاق المنظومة, و استخدام null, لا DBNull.

في المدى الطويل, معماريا أجد الحل الأفضل.

نصائح أخرى

إذا كنت قد كتبت الخاصة بك ORM ، ثم أود أن أقول فقط استخدام null, حيث يمكنك استخدام ذلك ولكن تريد.أعتقد DBNull كانت في الأصل تستخدم فقط للحصول على حول حقيقة أن قيمة الأنواع (int, التاريخ والوقت, الخ.) لا يمكن أن يكون null, لذلك بدلا من عودة بعض القيمة مثل الصفر أو التاريخ والوقت.مين الذي سوف يعني null (سيء) ، وأنشأوا DBNull تشير إلى هذا.ربما كان هناك أكثر من ذلك, ولكن أنا دائما أفترض أنه كان السبب.ولكن الآن أن لدينا أنواع nullable في C# 3.0, DBNull لم يعد ضروريا.في الواقع, LINQ to SQL فقط يستخدم فارغة في كل مكان.لا مشكلة على الإطلاق.احتضان المستقبل...استخدام null.;-)

من تجربة مررت بها،.صافي DataTables و TableAdapters العمل بشكل أفضل مع DBNull.كما يفتح عدد قليل من أساليب خاصة عندما كتبته بقوة مثل DataRow.IsFirstNameNull عندما تكون في المكان.

أتمنى أن تعطيك أفضل التقنية الجواب من ذلك, ولكن بالنسبة لي خلاصة القول هي استخدام DBNull عند العمل مع قاعدة بيانات الكائنات ذات الصلة ومن ثم استخدام "المعيار" لاغية عندما أتعامل مع الأشياء .صافي التعليمات البرمجية ذات الصلة.

استخدام DBNull.
نحن encouintered نوع من المشاكل عند استخدام null.
إذا كنت أتذكر بشكل صحيح لا يمكن إدراج قيمة فارغة إلى حقل, فقط DBNull.
يمكن أوراكل ذات الصلة فقط, آسف, أنا لا أعرف التفاصيل بعد الآن.

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