• أنشئ مشروعا جديدا من النوع Console Application وسمه LinqConsoleApp
• من قائمة Project اختر Add Reference ومن صفحة .net اختر System.Data.Linq ثم اضغط Ok ثم كرر العملية وأضف System.Windows.Forms
• في بداية الملف في أعلى محرر الكود أضف الاستيرادات التالية
Imports System.Data.Linq Imports System.Data.Linq.Mapping Imports System.Windows.Forms
• سنضيف الآن Entity Class والذي عن عبارة عن فئة منظمة وفق جدول قاعدة بيانات ولإنشاء هذه الفئة نضيف الصفة Table قبل تعريف الفئة والت تمتلك الخاصية Name التي تحدد اسم الجدول في قاعدة البيانات ثم سيكون علينا إضافة الخصائص لتمثل أعمدة الجدول ويتم تحديد الربط مع الأعمدة في قاعدة البيانات باستخدام الصفة Column والتي تمتلك عدة خصائص لتعريف العمود مثل IsPrimaryKey التي تمتلك قيما بوليانية تحدد فيما إذا كان العمود مفتاح أساسي أم لا والخاصية Storage التي تحدد اسم الحقل الخاص الذي سيخزن قيمة الخاصية – أضف الفئة التالية بعد تعريف الـ Module وقبل Sub Main
<Table(Name:="Customers")> _ Public Class Customer Private _CustomerID As String <Column(IsPrimaryKey:=True, Storage:="_CustomerID")> _ Public Property CustomerID() As String Get Return Me._CustomerID End Get Set(ByVal value As String) Me._CustomerID = value End Set End Property Private _City As String <Column(Storage:="_City")> _ Public Property City() As String Get Return Me._City End Get Set(ByVal value As String) Me._City = value End Set End Property End Class
• سنحتاج إلى إنشاء اتصال مع قاعدة البيانات NorthWind التي سنستخدمها لذا سنحتاج إلى تعريف غرض DataContext والذي يعتبر القناة الرئيسية لقراءة البيانات وتخزينها في قاعدة البيانات – أدخل سطر الكود التالي في الإجراء Sub Main
Dim db As New DataContext("D:\TEMP\NORTHWND.MDF")• ثم سنقوم بإنشاء غرض Table(of Customer) كي نستخدمه في الاستعلام من الجدول Customers أدخل الكود التالي مباشرة بعد الكود السابق
Dim Customers As Table(Of Customer) = _ db.GetTable(Of Customer)()
• أضف السطر التالي من الكود الذي سيطبع على نافذة الكونسول أوامر Sql التي سيتم تنفيذها على قاعدة البيانات
db.Log = Console.Out
• سنكتب الآن استعلام Linq ليستعلم أي من الزبائن موجودين في لندن – أدخل الكود التالي بعد الكود السابق
Dim custQuery = From cust In Customers _ Where cust.City = "London" _ Select cust
• ولتنفيذ الاستعلام يتوجب علينا الاستعانة بحلقة For Each للحصول على النتائج التي سنظهرها بواسطة رسالة في MessageBox – أضف الكود التالي الذي يقوم بتعريف متغيرات خصائص MsgBox ثم تشكيل الرسالة من خلال الدوران عبر الحلقة ثم إظهار الرسالة باستخدام المتغيرات التي قمنا بتعريفها
Dim msg As String = "", title As String = "London Customers:", _ response As MsgBoxResult, style As MsgBoxStyle = MsgBoxStyle.Information For Each CustObj In custQuery msg &= String.Format(CustObj.CustomerID & vbCrLf) Next response = MsgBox(msg, style, title)
• وسيصبح بالتالي الكود الكامل للبرنامج كما يلي
Imports System.Data.Linq
Imports System.Data.Linq.Mapping
Imports System.Windows.Forms
Module Module1
<Table(Name:="Customers")> _
Public Class Customer
Private _CustomerID As String
<Column(IsPrimaryKey:=True, Storage:="_CustomerID")> _
Public Property CustomerID() As String
Get
Return Me._CustomerID
End Get
Set(ByVal value As String)
Me._CustomerID = value
End Set
End Property
Private _City As String
<Column(Storage:="_City")> _
Public Property City() As String
Get
Return Me._City
End Get
Set(ByVal value As String)
Me._City = value
End Set
End Property
End Class
Sub Main()
Dim db As New DataContext("D:\TEMP\NORTHWND.MDF")
Dim Customers As Table(Of Customer) = _
db.GetTable(Of Customer)()
db.Log = Console.Out
Dim custQuery = From cust In Customers _
Where cust.City = "London" _
Select cust
Dim msg As String = "", title As String = "London Customers:", _
response As MsgBoxResult, style As MsgBoxStyle = MsgBoxStyle.Information
For Each CustObj In custQuery
msg &= String.Format(CustObj.CustomerID & vbCrLf)
Next
response = MsgBox(msg, style, title)
End Sub
End Module• شغل البرنامج وانظر المخرجات على نافذة الكونسول وفي الرسالة