ملء المخطط IDataAdapter.FillSchema:
تملأ مجموعة البيانات بمخطط البيانات Schema.. هذا معناه أن الجداول الناتجة عن الاستعلام وتفاصيل أعمدتها
ستضاف إلى مجموعة البيانات، لكن دون إضافة أي سجلات إليها.. بتعبير آخر: سيتم ملء
مجموعة البيانات بجداول فارغة.
وتستقبل هذه الوسيلة معاملين:
- كائن مجموعة البيانات
DataSet الذي سيتم ملؤه بالمخطط.
- إحدى قيم
المرقم SchemaType، تحدد ماذا سيحدث لو كان موصل البيانات يحتوي مسبقا على خرائط
للجداول والأعمدة Mappings،
وهذه القيم هي:
Source
|
تجاهل
خرائط الجداول وخرائط الأعمدة، وملء مجموعة البيانات بنفس أسماء الجداول
والأعمدة الأصلية الموجودة في المخطط Schema.
|
Mapped
|
استخدام
خرائط الجداول وخرائط الأعمدة، وملء مجموعة البيانات بالأسماء الموجودة في هذه
الخرائط بدلا من أسماء الجداول والأعمدة الأصلية.
|
ويتضمن المخطط الذي يتم ملء مجموعة البيانات به
التفاصيل التالية:
- اسم
الجدول، وأسماء الأعمدة.
- خصائص كل
عمود، مثل:
أ. السماح بتركه فارغا AllowDBNull.
ب. هل هو متفرد Unique.
ج. هل هو للقراءة فقط ReadOnly.
د. هل يزيد
تلقائيا AutoIncrement.. لكن عليك أنت تحديد معدل الزيادة وبداية العداد، فهما لا يضافان
تلقائيا.
- إذا كان المفتاح الأساسي Primary Key موجودا ضمن أعمدة النتيجة، يتم استخدامه كمفتاح أساسي للجدول في
مجموعة البيانات.. وإذا لم يوجد مفتاح أساسي وكان هناك حقل متفرد القيمة Unique، يتم استخدامه كمفتاح أساسي للجدول في مجموعة البيانات، بشرط ألا
يكون مسموحا بتركه فارغا (AllowDbNull = False).. أما إذا كان الحقل المتفرد يقبل القيمة NULL، فلن يستخدم كمفتاح أساسي، وستكتفي هذه الوسيلة بإضافة قيد التفرد
UniqueConstraint الخاص بهذا العمود إلى مجموعة القيود ConstrainsCollection الخاصة بالجدول.
- أي قيود أخرى غير المفتاح الأساسي وقيد التفرد لا تضاف إلى
الجدول، وعليك إضافتها بنفسك!
وتعيد هذه الوسيلة مصفوفة جداول DataTable
Array، تحتوي على كائنات الجداول
التي تمت إضافة مخططاتها إلى مجموعة البيانات.
ويمكنك بعد استخدام هذه الوسيلة، استخدام
الوسيلة Fill لملء الجداول بالبيانات.. لكن كما ذكرنا سابقا، فإن استدعاء
الوسيلة Fill بمفردها يضيف مخططات الجداول والسجلات معا إلى مجموعة البيانات، ما
يغني في معظم الحالات عن استدعاء الوسيلة FillSchema أولا.
إذن.. فما فائدة هذه الوسيلة؟
تفيدك هذه الوسيلة إذا أردت عرض الجداول فارغة
للمستخدم ليدخل بيانات جديدة دون أن يعبث بالبيانات القديمة.. هذا هو ما فعلناه في
المشروع UpdateErrors، حيث سيعرض جدول البيانات أعمدة جدول المؤلفين، لكنه لن يعرض
بيانات أي مؤلفين، وبهذا يستطيع المستخدمن إدخال مؤلفين جددا وحفظهم في قاعدة
البيانات، دون أن يغير بيانات المؤلفين السابقين.
تفيدك أيضا إذا أردت إنشاء المفتاح الأساسي في
جدول مجموعة البيانات، فاستخدام الوسيلة Fill بمفردها لا ينشئ المفتاح الأساسي في الجدول الذي تضيفه إلى مجموعة
البيانات، وهذا قد يسبب لك مشاكل في بعض الحالات التي تحتاج فيها إلى المفتاح
الأساسي، كما يحدث عند استخدام الوسيلة DataSet.Merge لدمج السجلات، أو عند البحث عن سجل بدلالة مفتاحه الأساسي... إلخ.
ليست هناك تعليقات:
إرسال تعليق
ملحوظة: يمكن لأعضاء المدونة فقط إرسال تعليق.