28 December, 2007كيفية استخدام LINQ To SQL
في أيام العيد الأولى انتهيت من جزء كبير من مشروع إحدى المواد
و سأفرد للبرنامج و فكرته موضوع مستقل بعد الانتهاء من النسخة الأولية
لكني سأتحدث هنا عن شيء عظيم جداً و نقله نوعية في استخدام قواعد البيانات مع البرامج
فقد استخدمت 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

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

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

الآن اذهب إلى صفحة الكود وتابع أهم الخطوات لتفهم الفكرة فقط ثم تبدع بنفسك
أولاً :
أنشئ 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
و بالهنا و الشفا
أخوكم / سفير القلم
![]()
أرسل الموضوع إلى من تحب
|




28 December, 2007 في الساعة 1:46 pm
راااائع ياسفير,
بالفعل ما يكروسوفت تتحفنا دائما بأدوات و تقنيات تسيهيليه تحول حياة المطورين الى متعة
شكرا على المجهود.
31 December, 2007 في الساعة 11:54 pm
يعطيك الف عافيه اخوي سفير
الشرح والدرس واضح جداً جداً واكثر من رائع
وأحلى شي فيه أنه حار جداً ^_*
وبارك الله فيك