العمود كثافة العمليات قيم الفارغة في مجموعة البيانات

StackOverflow https://stackoverflow.com/questions/879095

سؤال

وأنا أعمل مع صافي مجموعات البيانات كتابة بشدة ولديك جدول مع عمود قيم الفارغة الباحث (وعمود التاريخ والوقت قيم الفارغة أيضا).

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

ولقد رأيت عدة منشورات الأخبار حول هذه المشكلة ولكن لم نر أي الحلول لائق لهذه المسألة.

وأنا أحب أن أسمع كيف يمكن للآخرين تعاملوا مع هذه المشكلة.

وشكرا.

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

المحلول

وقد وجه <ع> DBNULL أساسا في اللعب للتعامل مع أنواع قيمة غير قيم الفارغة، قبل Framework 2.0. نظرا لتصميم ADO.NET، وليس هناك طريقة يمكنك تجنب DBNULL، إلا إذا اختار نهجا أكثر مباشرة. بنيت في DBNULL جوهر ADO.NET، لذلك عليك أن تتعلم التعايش مع ذلك، إذا كنت ترغب في الاستمرار في استخدامه.

إذا قمت بتوفير الخاصة حدات النقل البيانات الخاصة بك بدلا من الاعتماد على مساحة الاسم System.Data عام، يمكنك التحقق من (أثناء قراءة في النتائج مع البيانات قارئ) إذا كانت قيمة فارغة، ولكن عليك بعض الطرق ل إنشاء كائنات كتبته بقوة وتعيينات لأن هذا العمل الشاق حقا.

لمدى معرفتي، هو مبني DBNULL في لتصميم ADO.NET وأفضل وسيلة لبناء التطبيقات الخاصة بك إذا كنت تستخدم هذا، هو أن تلتحم (تطبيع) DBNULL وباطلة. في الأساس، وتوفير درجة DbConvert الخاصة التي تعترض DBNULL وإرجاع إشارة لاغية الفعلية إذا كانت القيمة DBNULL. هذا هو شرط الحد الأدنى، ولكن بمجرد أن يتم ذلك سيكون لديك أقل قيم DBNULL تطوف ما يدعو للقلق.

نصائح أخرى

وأعتقد أن هذا المنصب فى منتدى ASP.NET يكون بعض المساعدة للسؤال: بشدة-DataSet المكتوب / القضية عمود Nullable و

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

والطريقة الوحيدة لتحديد هذه الخصائص ل   باطل هو استخدام أساليب المساعد التي   يخلق مولد مجموعة البيانات أيضا.   تتم تسمية الطرق بعد الخاص بك   اسم العمود، وذلك في حالة الخاص بك، فإنك   ينبغي أن يكون الأساليب على صف البيانات   كائن يسمى IsApprovingUserNull ()   وSetApprovingUserNull ().

ولقد كانت فترة من الوقت منذ أن استخدمت كتابة وحدات DataSet، ولكن أرى في بلدي القانون القديم التي تستخدم السمة codegen:nullValue. لا اعتقد انها مدعومة من قبل المصمم، على الأقل ليس في VS2005 (التي تستخدم لهذا المشروع)، لذلك كنت قد لفتح ملف XSD في محرر أكس والقيام باليد.

وقال إن أكس الناتجة ننظر بشيء من هذا القبيل:

<xs:sequence>
    <xs:element 
        name="MyIntColumn" 
        codegen:nullValue="0" 
        type="xs:int" 
        minOccurs="0" />
    <xs:element 
        name="MyBoolColumn" 
        codegen:nullValue="false" 
        type="xs:boolean" 
        minOccurs="0" />
    <xs:element 
        name="MyDateColumn" 
        codegen:nullValue="1900-01-01" 
        type="xs:dateTime" 
        minOccurs="0" />
</xs:sequence>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top