عندما نكون قد وصلنا إلى هذه المرحلة ، اعتقد انه قد حان الوقت لنكون قد انتهينا من الحاجه في اظهار الكثير من الخطوات ! حيث انني اود عرض الاختلافات فقط !
نقوم بداية بإضافة فئة جديدة من النوع ADO.NET Entity data Model ونسميها مثلا CustomerOrdersModel ثم يظهر امامنا المعالج طالبا منا تحديد كيفية تصميم مصدر البيانات لنطلب منه توليد النموذج بكرم من قاعدة البيانات :
الخطوة التالية ، يطلب منك المعالج تحديد قاعدة البيانات ، قم بتحديد قاعدة البيانات Northwind بنفسك ، ثم انتقل إلى الخطوة التي بعدها وحدد الجدولين Customer,Orders ، وفي خانة الـ Namespace اكتب اسم دلالي مميز سنحتاجه لاحقا وليكن Entities ، انه المعالج بعدها ، لتفتح لك نافذة جديدة وهي نافذة الـ ModelDesigner ، طبعا لا حاجه لك في تعديل أي شيء هناك :
لكنني اود اخبارك بأنه يفضل ل كان تغير قيمة الخاصية Entity Container Name والتي تمثل اسم الفئة الحاضنة لجداول قاعدة البيانات ، فهي التي سنستخدمها دوما في اكوادنا ، ففي حالة احتواء مشروعك على عدة نماذج Models من هذا النوع فقد يتكرر الاسم عليك ويسبب لك شيء من الارتباك البرمجي .
الآن توجه إلى النافذة الجديدة Form1 لنقوم بتطوير نافذة Master Details من النوع Full Details ، سنحتاج اولا إلى اضافة الـ DataSource ، وهنا تشترك الطريقتان LINQ-to-SQL و EntityFramework في كون الطريق هي نفسها ، حيث تختار ان يكون مصدر البيانات هو كائن Object ثم تحدد الفئة Customer وتنهي المعالج كالعادة لتجد الفئات قد وجدت على شكل جداول في النافذة Datasources ، قم بعدها بسحب الجدول Customer على شكل Details إلى النافذة from1 ثم الجدول Orders الفرعي التابع له النافذة ايضا ! بعدها انتقل مباشرة إلى نافذة محرر الاكواد حيث اننا سنحتاج إلى كتابة سطيرات برمجي بسيطة :
|
Public Class Form1
Dim ent As New Entities Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load Me.CustomersBindingSource.DataSource = ent.Customers.Include("Orders") End Sub Private Sub CustomersBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles CustomersBindingNavigatorSaveItem.Click Me.CustomersBindingSource.EndEdit() Me.ent.SaveChanges() End Sub |
حيث نقوم اولا بتعريف كائن جديد من النوع Entities وهي الفئة التي تحضن باقي فئات الجداول في الـ Entity Framework ، وفي حدث التحميل نقوم باسناد قيمة إلى الكائن BindingDataSource ولكن هنا لدي ملاحظه مهمه جدا ، وهي ضرورة استخدام الطريقة Inculde وارسال إسم الجدول المرتبط معها ، حيث لو كتبت ent.Customers فإن سجلات الجدول الفرعي Orders لن تظهر وانما ستظهر البيانات الاساسية فقط من الجدول الاب Customers .
وبالنسبة لحفظ التعديلات فكما نلاحظ فإننا لا نحتاج إلا إلى مناداة الطريقة SaveChanges حتى يتولى عنك خلفان وعباس وحمدان القيام بالباقي !
بالنسبة لتطوير نموذج من النوع Lookup List فلا اعتقد انك ترغب في اعادة كل السطور من الدرسين الماضيين وتغيير كلمه واحده فقط في كل مره !


أحدث التعليقات