في أيام العيد الأولى انتهيت من جزء كبير من مشروع إحدى المواد

و سأفرد للبرنامج و فكرته موضوع مستقل بعد الانتهاء من النسخة الأولية

لكني سأتحدث هنا عن شيء عظيم جداً و نقله نوعية في استخدام قواعد البيانات مع البرامج

فقد استخدمت LINQ To SQL

وكانت تجربة رائعة جداً .. الفضل بعد الله فيها يعود إلى الأخ عمر العمودي .. حيث كان دائماً يحدثني عنها ..

وفي اليوم الأخير قبل ساعات من رحلته إلى مكة فتحنا موضوع LINQ وبدأت يومها الخطوات الأولى

وانتهيت من جزء كبير جداً فيما يتعلق بقواعد البيانات و استخدامها في البرنامج في وقت قياسي

شكراً عمر

و الآن لنتحدث قليلاً عن LINQ

إنها Language Integrated Query

نظرة عامة :

حين تريد أن تصنع برنامجاً و تستخدم فيه قاعدة بيانات ففي الغالب أنك ستستخدم SQL وهي لغة قوية و رائعة جداً لكن ستشعر و كأن برنامجك انقسم إلى قسمين قسم خاص بالكود الذي عملت عليه و قسم آخر كأنه منفصل يختص بقواعد البيانات

بالإضافة إلى الخطوات الطويلة في استخدام قاعدة البيانات و استخدام أوامر الاستعلام و و و

الآن مع LINQ الأمر يتم بسهولة عجيبة تحفظ وقتك بشكل كبير جداً و تنفذ لك ما أردت في سهولة وقوة

لم أجد LINQ في الإصدار القديم من فيجوال استوديو Visual Studio 2005

يوجد فقط في الإصدار الجديد Visual Studio 2008 أوكما يطلقون عليه أوركاس Orcas

الفكرة ببساطة :

تمكنك LINQ من استخدام قاعدة البيانات و الارتباط بها و التعامل معها في الدوت نت .NET كأنها Classes

وفي السابق كان التعامل مع البيانات يختلف باختلاف نوعها فقواعد البيانات database تختلف عن XML و تختلف عن Collections مثل ArrayList

و الآن مع LINQ فستتوحد طريقة التعامل معها بغض النظر عن النوع

لها ثلاثة أنواع رئيسية

DLinq — DataBase

XLinq — XML Files

Linq –Collection e.g. ArrayList

و الآن إلى الجانب العملي و التطبيق الذي استفدت منه كثيراً في مشروعي

أولاً أنشأت قاعدة البيانات و أدخلت بيانات افتراضية ثم فتحت الفيجوال ستوديو 2008

بالنسبة لي استخدمت مشروع WPF وهذا موضوع آخر سأتحدث عنه لاحقاً

المهم اختر المشروع و أعطه الاسم الذي تريد ثم توجه إلى إضافة عنصر جديد

سأطبق لكم على المشروع الذي عملت عليه

بعد أن تفتح المشروع .. من قائمة Project

اختر

Add New Item أو اضغط على الاختصار Ctrl + Shift + A

و اختر

LINQ To SQL Classes

لا تنس الاسم الذي ستختاره .. مثلاً في مشروعي اخترت Boardr.dbml

طبعاً أنت قد اتصلت بقاعدة البيانات وهي موجودة في مشروعك و الآن من القائمة اليسرى

Server Explorer

اذهب إلى

Database Diagrams

http://sfeer.psdgroups.com/wp-content/uploads/linq1.gif

ثم اختر الجداول التي تريد

http://sfeer.psdgroups.com/wp-content/uploads/linq2.gif

سيتكون عندك الشكل التالي

http://sfeer.psdgroups.com/wp-content/uploads/linq3.gif

الآن اذهب إلى صفحة الكود وتابع أهم الخطوات لتفهم الفكرة فقط ثم تبدع بنفسك

أولاً :

أنشئ DataContext من خلال السطر التالي

BoarderDataContext bdct = new BoarderDataContext();

الآن بإمكانك التعامل مع قاعدة البيانات و السطر السابق سيتكفل بالوصول لقاعدة البيانات و التعامل معها

لدينا في المثال السابق أربعة جداول

الآن تستطيع أن تنشئ Object منها كما تشاء مثلاً إذا أردت إنشاء object من جدول Person

Person p = new Person();

وهكذا

ستلاحظ إذا بدأت تكتب bdct ثم علامة الدوت فسيعطيك أسماء الجداول .. و لو اخترت الجدول ثم دوت فسيعطيك أسماء الأعمدة

هذا ما يتعلق بكيفية إنشاء Objects وسهولتها

الآن سنعرض كيفية الاستعلام وكتابة Query داخل الكود ثم نأخذ المثال العملي

الطريقة سهلة جداً

كالتالي


var result = from p in bdct.Person
where p.Person_ID == "111"
select p.Name;

المثال السابق يرجع لك أسماء الأشخاص الموجودين في قاعدة البيانات في الجدول Person

تستطيع أن تضع في الجملة الأولى أنواع أخرى من البيانات مثل XML أو غيرها بدل الداتابيس

ومن الممكن أن تضع الناتج في Array أو List

سأضع هنا أمثلة أخرى لتوضيح فكرة التعامل مع الاستعلام و الطلب من قاعدة البيانات

و الأمثلة من مدونة asp.net

هنا مثلاً كيفية الاستعلام و استخراج بيانات معينة من قاعدة البيانات

المثال السابق سيرجع لك المنتجات products التي اسم الصنف Beverages

أليست العملية سهلة وممتعة في كتابة الاستعلام Query بهذه الطريقة

هل تريد أن تضيف شيئاً إلى قاعدة البيانات .. إليك المثال ..

ممتعة ..

و الحذف أيضاً سهل جداً .. هنا المثال لحذف عنصر من قاعدة البيانات ..

الأمثلة كثيرة جداً و التعامل معها سهل جداً جداً جداً

أردت أن أنقل صورة مبسطة للتعامل مع LINQ

و لأني فعلاً وجدت الأمر ممتع و سهل و أتمنى أن يستفيد منه الجميع

فمميزاتها كثيرة ربما منها أن الأخطاء تكتشف في Run Time

وأنها تتعامل مع جميع البيانات فلا تحتاج لتعلم كل طريقة على حدة

وأنها تدعم Intellisense

والكثير الذي لازلت أجهله

ربما تفيدونا به

بقي في الختام أن أعرض لكم بعض الروابط و المصادر و شروحات الفيديو التي استفدت منها

هنا شروحات الفيديو

http://www.asp.net/learn/linq-videos/

هنا أمثلة حتى الإشباع

http://www.asp.net/learn/linq-videos/

هنا مدون عجيب تحدث بالتفصيل

http://weblogs.asp.net/scottgu/archive/tags/LINQ/default.aspx

هنا موقع مايكروسوفت الخاص بمشروع LINQ

http://msdn2.microsoft.com/en-us/netframework/aa904594.aspx

مدونة مفيدة وخطواتها العملية واضحة و سهلة

http://www.hookedonlinq.com/AllPages.aspx?Cat=LINQ%20to%20Objects

مصادر عربية

http://www.vb4arab.com/vb/showthread.php?t=343

http://www.orwah.net/modules/news/article.php?storyid=89

http://www.csharp1.com/main/index.php?option=com_content&task=view&id=14&Itemid=2

http://mmas25.spaces.live.com/blog/cns!B0E3C022016C0ECD!121.entry

و بالهنا و الشفا

أخوكم / سفير القلم

إذا أعجبك المقال bookmark bookmark bookmark bookmark bookmark bookmark bookmark bookmark bookmark bookmark bookmark bookmark bookmark bookmark