في البداية سنحتاج لتنصيب قاعدة البيانات Northwind المثال من الرابط NorthWind حيث سيرتكز عليها عملنا هنا
قم بتحميل قاعدة البيانات من الرابط المذكور ثم قم بتنصيبها على الجهاز لديك وربطها مع SQL Server
كما سنحتاج لإضافة وظيفة مخزنة لقاعدة البيانات المذكورة كما يلي
• أنشئ اختصار على سطح المكتب لتشغيل SQLCmd لإضافة الوظيفة المخزنة بحيث تكون خصائصه كالتالي علما بأنني أستخدم SQL Server 2005 Express والنظام تم تنصيبه على محرك الأقراص C
o Target تحمل القيمة:
%windir%\system32\cmd.exe /C "SQLCMD -S .\SQLEXPRESS"
o Start in تحمل القيمة:
"C:\Program Files\Microsoft SQL Server\90\Tools\Binn"
• شغل الاختصار للدخول إلى سطر أوامر SQLCmd ثم أدخل في نافذة الكونسول عند 1> الأوامر التالية وذلك لتبديل قاعدة البيانات الحالية إلى قاعدة البيانات northWind
Use northwind Go
• أدخل السكريبت التالي الذي سيقوم بإنشاء الوظيفة المخزنة المطلوبة
IF EXISTS (SELECT * FROM sysobjects WHERE name = 'SelectCustomers' AND user_name(uid) = 'dbo') DROP PROCEDURE dbo.[SelectCustomers] GO CREATE PROCEDURE dbo.[SelectCustomers] AS SET NOCOUNT ON; SELECT CustomerID, CompanyName, ContactName, ContactTitle, Address, City, Region, PostalCode, Country, Phone, Fax FROM dbo.Customers GO IF EXISTS (SELECT * FROM sysobjects WHERE name = 'InsertCustomers' AND user_name(uid) = 'dbo') DROP PROCEDURE dbo.InsertCustomers GO CREATE PROCEDURE dbo.InsertCustomers ( @CustomerID nchar(5), @CompanyName nvarchar(40), @ContactName nvarchar(30), @ContactTitle nvarchar(30), @Address nvarchar(60), @City nvarchar(15), @Region nvarchar(15), @PostalCode nvarchar(10), @Country nvarchar(15), @Phone nvarchar(24), @Fax nvarchar(24) ) AS SET NOCOUNT OFF; INSERT INTO [dbo].[Customers] ([CustomerID], [CompanyName], [ContactName], [ContactTitle], [Address], [City], [Region], [PostalCode], [Country], [Phone], [Fax]) VALUES (@CustomerID, @CompanyName, @ContactName, @ContactTitle, @Address, @City, @Region, @PostalCode, @Country, @Phone, @Fax); SELECT CustomerID, CompanyName, ContactName, ContactTitle, Address, City, Region, PostalCode, Country, Phone, Fax FROM Customers WHERE (CustomerID = @CustomerID) GO IF EXISTS (SELECT * FROM sysobjects WHERE name = 'UpdateCustomers' AND user_name(uid) = 'dbo') DROP PROCEDURE dbo.UpdateCustomers GO CREATE PROCEDURE dbo.UpdateCustomers ( @CustomerID nchar(5), @CompanyName nvarchar(40), @ContactName nvarchar(30), @ContactTitle nvarchar(30), @Address nvarchar(60), @City nvarchar(15), @Region nvarchar(15), @PostalCode nvarchar(10), @Country nvarchar(15), @Phone nvarchar(24), @Fax nvarchar(24), @Original_CustomerID nchar(5) ) AS SET NOCOUNT OFF; UPDATE [dbo].[Customers] SET [CustomerID] = @CustomerID, [CompanyName] = @CompanyName, [ContactName] = @ContactName, [ContactTitle] = @ContactTitle, [Address] = @Address, [City] = @City, [Region] = @Region, [PostalCode] = @PostalCode, [Country] = @Country, [Phone] = @Phone, [Fax] = @Fax WHERE (([CustomerID] = @Original_CustomerID)); SELECT CustomerID, CompanyName, ContactName, ContactTitle, Address, City, Region, PostalCode, Country, Phone, Fax FROM Customers WHERE (CustomerID = @CustomerID) GO IF EXISTS (SELECT * FROM sysobjects WHERE name = 'DeleteCustomers' AND user_name(uid) = 'dbo') DROP PROCEDURE dbo.DeleteCustomers GO CREATE PROCEDURE dbo.DeleteCustomers ( @Original_CustomerID nchar(5) ) AS SET NOCOUNT OFF; DELETE FROM [dbo].[Customers] WHERE (([CustomerID] = @Original_CustomerID)) GO
أصبحنا الآن جاهزين للبدء بالعمل.
• أنشئ مشروعا جديدا من نوع Windows Forms Application وسمه ORDesignerWalkthrough
• من قائمة Project اختر Add New Item ثم اختر LINQ to SQL Classes وفي مربع الاسم أدخل Northwind.dbml ثم اضغط ADD فيتم إنشاء الفئات المطلوبة ويضاف ملف الفئات الفارغ Northwind.dbml إلى المشروع ويفتح O/R Designer تلقائيا
• لإضافة Customer entity class إلى O/R Designer افتح نافذة Server Explorer/Database Explorer ثم أنشئ اتصال لقاعدة البيانات NorthWind إن لم يكن موجودا ثم تنقل عبر جداول قاعدة البيانات لتصل إلى الجدول Customers
• باستخدام السحب والإفلات اسحب الجدول Customers إلى نافذة O/R Designer فيتم إنشاء entity class باسم Customer
• كرر عملية السحب والإفلات لإضافة الجدول Orders إلى O/R Designer فيتم إنشاء entity class آخر باسم Order ويتم تعريف رابط بين الجدولين باسم Customer_Order
• من قائمة Build اختر Build ORDesignerWalkthrough لبناء المشروع ثم اختر Show Data Sources من قائمة Data
• اضغط Add New Data Source ثم في صفحة Choose a Data Source Type اختر Object واضغط Next
• وسع عقدة ORDesignerWalkthrough وابحث عن الفئة Customer وقم بتحديدها ثم اضغط Finish فيتم إضافة الفئة Customer إلى نافذة Data Sources
• افتح Form1 في طريقة عرض التصميم ثم قم بسحب Customer من نافذة Data Sources إلى سطح Form1
• كرر عملية السحب لسحب عقدة Orders من داخل Customer في نافذة Data Sources إلى سطح Form1 أسفل CustomerDataGridView
• افتح محرر الكود الخاص بـ Form1 وأدخل الكود التالي في القسم العام بعد تعريف الفئة مباشرة
Private NorthwindDataContext1 As New NorthwindDataContext
• أنشئ إجراء معالجة للحدث Load الخاص بـ Form1 وأدخل فيه الكود التالي
CustomerBindingSource.DataSource = NorthwindDataContext1.Customers
• شغل التطبيق واختبره – لاحظ البيانات في الـ Data Grids
• لإضافة إمكانية الحفظ افتح Form1 في طريقة عرض التصميم واختر زر الحفظ من شريط الأدوات أعلى النافذة وغير الخاصية Enabled الخاصة بالزر إلى True
• انقر نقرا مزدوجا على زر الحفظ للانتقال لمحرر الكود وإنشاء إجراء معالجة الحدث Click الخاص بالزر – أدخل الكود التالي في الإجراء
Try NorthwindDataContext1.SubmitChanges() Catch ex As Exception MessageBox.Show(ex.Message) End Try
• شغل البرنامج واختبر عملية الحفظ
• لإضافة استعلامات Linq لتطبيقنا افتح Form1 في طريقة عرض التصميم ثم أضف صندوق نصوص وغير اسمه إلى CityTextBox ثم أضف زرا وغير اسمه إلى RunQueryButton والنص الظاهر عليه إلى Run Query
• انقر نقرا مزدوجا على الزر وأدخل الكود التالي في إجراء معالجة الحدث Click الخاص بالزر
If Trim(Me.CityTextBox.Text) = String.Empty Then Me.CityTextBox.Text = "*" End If Dim CustomersQuery = From customers In NorthwindDataContext1.Customers _ Where customers.City Like CityTextBox.Text _ Select customers CustomerBindingSource.DataSource = CustomersQuery
• شغل البرنامج واختبره – أدخل London مثلا في صندوق النصوص ثم اضغط الزر
• لتغيير السلوك الافتراضي للعمليات Insert و Update و Delete انقر نقرا مزدوجا على Northwind.dbml في Solution Explorer وذلك لفتح O/R Designer
• من نافذة Server Explorer/Database Explorer حدد اتصال قاعدة البيانات NorthWind وانتقل إلى Stored Procedures وحدد الوظيفة المخزنة المسماة UpdateCustomers ثم قم بسحبها إلى O/R Designer
• اختر الفئة Customer في O/R Designer ومن نافذة الخصائص حدد الأمر Update وانقر الزر المنقط بجانب Use Runtime فيفتح صندوق الحوار Configure Behavior ثم قم باختيار Customize
• من القائمة المنسدلة تحت Customize اختر UpdateCustomers
• انتقل إلى Original_CustomerID ثم غير القيمة المرتبطة معها إلى CustomerID (Original)
• شغل البرنامج وعدل بعض البيانات واختبر عملية الحفظ