الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مثال عن Linq To Sql

مغلق
بدأه محمد سامر أبو سلو في 22 ديسمبر 2007 · 0 رد · 689 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1

• أنشئ مشروعا جديدا من النوع 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

• شغل البرنامج وانظر المخرجات على نافذة الكونسول وفي الرسالة

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

هذا الموضوع مغلق.

مواضيع مشابهة