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

الطريق الى Ado.net Entity Framework

مثبّترائج
بدأه علي .ع في 3 أغسطس 2010 · 30 رد · 23,652 مشاهدة · في ADO.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

سنتناول اليوم موضوع جديد عن Entity Framework فما هي هذه التقنية بشكل مختصر وعبر عدة مراحل اليوم سوف نتكلم عن مقدمة بسيطة و تطبيق يسهل لنا التعرف على التقنية الجديدة

تقنية Entity Framework موجهة للتعامل مع قواعد البيانات بشكل منفصل ظهرت هذه التقنية مع ظهور Dotnet Framework 3.5 اما عن الية عملها فهي تقوم بعمل كبسلة للجداول في قاعدة البيانات وانشاء فئات لهذه الجداول

كما كنا نتعامل مع تطبيقات n_tier تماما فال Entity Framework جاءت لنفس الغرض الذي تقدمة n-tier لكن في Entity Framework يقوم الفيجوال استديو بالقيام بالمهمة بدلا من ان نقوم بها نحن مسهلة لنا المهمة

كما انها تقوم بانشاء الجداول من كلاسات ايضا وسنتطرق الى ذلك في فرصة اخرى ان شاء الله

قد يتسال البعض ماهي n-tier وما الفائدة منها

بالعربي n-tier هي تطبيق متعدد الطبقات تتخاطب في ما بينها

الغاية منها المركزية والجماعية و سهولة تدارك الاخطاء بما ان البرنامج مقسم الى عدة اجزاء كما انه لا يهمانا باي لغة برمجة تم برمجة كل جزء مثلا ملف dll مبرمج على vb.net استطيع ان استخدمه ب c# او جافا او غير ذلك

نرجع الى موضوعنا والان سوف نبد بتطبيق بسيطة وستكتشف سهولة هذة التقنية وقوتها في نفس الوقت وسنطترق الى كل التفاصيا في وقتها ان شاء الله

قم بانشاء مشروع جديد انا استخدم Visual studio 2010

post-112245-048027400 1280791495_thumb.j

اختر مشروع WinFormاختر لغة البرمجة التي تناسبك انا اخترت

C#

post-112245-045985700 1280791505_thumb.j

انتقل الى Solution explorer

كليك يمين بالفارة على المشروع ثم اختر Add بعدها اختر

New item

post-112245-021781600 1280791513_thumb.j

لتظهر نافذة كما في الصورة

post-112245-029867400 1280791529_thumb.j

اختر Ado .Net Entity Data Model ثم اختر اسما للكتلة في القسم Name هنا اسميته TestMdl ونتابع كما في الصورة التالية

post-112245-097407900 1280791537_thumb.j

اختر منها Generate from database

تظهر نافذة اخرى تطلب منك تحديد قاعد البيانات

post-112245-056290600 1280791551_thumb.j

كما تلاحظ في اسفل النافذة يطلب منك اداخل اسم ال connction ليحفظها في ملف app.config

بامكانك ان تترك الاسم الافتراضي

ان لم ترغب في انشاء الملف يمكنك ان تزيل علامة الصح من على chekbox

بعدما تختار قاعدة البيانات كليك على next

اخير يطلب منك اختيار Views,Stored Procedure,Tables ,

post-112245-060893600 1280791571_thumb.j

في هذه المرحلة يطلب منك اختيار Views,Stored Procedure,Tables

كما يطلب منك اسم NameSpace كما يمكنك ان تتركه باسمه الافتراضي

أخيرا المفاجأة لقد أنشاء الفيجوال ستديو الفئات لجميع الجداول التي اخترنها والعلاقات

post-112245-097742900 1280792315_thumb.j

كما ترى في أسفل كل فئة Navigation Properties وهي تمثل الحقول المرتبطة فيما بينها

كما انه قد انشاء ملفxml

post-112245-032353000 1280791600_thumb.j

وقام بكتابة الفئات (هذا ما اسميه اللمسة السحرية )

post-112245-059016300 1280791612_thumb.j

post-112245-040860100 1280791624_thumb.j

لم يبقى لنا ألان إلا أن نقوم باستغلال هذه الفئات

ارجع الى الفورم الاول

post-112245-025975700 1280791641_thumb.j

قم بسحب وإسقاط datagridviw واتبع الصورة

post-112245-052656000 1280791652_thumb.j

بعدا اختر الجدول الذي تريد إظهاره في datagrideview

post-112245-099238300 1280791663_thumb.j

الى لقاء قريب ان شاء الله وفقنا الله واياكم لما يحبه ويرضاه

المرفقات
1.JPG2.JPG3.JPG4.JPG5.JPG6.jpg8.JPG9.JPG10.JPG11.JPG12.JPG13.JPG14.JPGSans titre.JPG
5

اللهم علمنا ما ينفعنا وانفعنا بما علمتنا وانفع الناس بنا واغفر لنا وارحمنا

#2

السلام عليكم

بارك الله فيك اخي علي وجعله في ميزان حسناتك

بالرغم من ان الموضوع جديد وقيم الا انه لا توجد هناك ردود فما هو السبب يا ترى؟ :wacko:

تريد الفوز إضغط هنا

اشِهِدي يَا سَمَـا وَاكْتُبَنْ يا وُجـودْ

إنَّـنَـا للِحـمَـا سَنَكُونُ الجُـنُـودْ

فـنَـزيحْ البَـلاَ وَنَـفُـكُّ الْقُيُـودْ

ونَنيلُ الـرِّضـا مِنْ وَفَّى بِالعْهُـودِ

الشيخ عبد الحميد ابن باديس

#3

قلة دراية بما يجري

ربنا يجزيك كل خير اخي علي

In bad state

#4

شكرا اخي على

اقتباس
كما كنا نتعامل مع تطبيقات n_tier تماما فال Entity Framework جاءت لنفس الغرض الذي تقدمة n-tier لكن في Entity Framework يقوم الفيجوال استديو بالقيام بالمهمة بدلا من ان نقوم بها نحن مسهلة لنا المهمة

هل لنا ان تشرح لنا n_tier بواسطة Entity Framework و لو بمثال

#5

شكرا لكم اخواني الكرام

وان شاء الله ينضم الينا عدد اكبر من الاعضاء

اخي عبد العالي مازلنا لم نقدم شيئا في هذه التقنية وحينما ننتهي اطلب ما تريد

وفقنا الله واياكم لما يحب ويرضى

1

اللهم علمنا ما ينفعنا وانفعنا بما علمتنا وانفع الناس بنا واغفر لنا وارحمنا

#6

السلام عليكم ورحمة الله وبركاته

اولا انا اعتذر اخي XFile لاني كنت قد وعدتك بانشاء مشروع ويب لكن الظروف لم تسمح وان شاء الله انا عندي وعدي عندما تسمح الظروف

نواصل باذن الله موضوعنا في تقنية Entity Framework واليوم سوف نتطرق باذن الله الى كيفية انشاء اصناف ثم انشاء الجدول انطلاقا من هذه الكلاسات

بسم الله نبدا

انشاء مشروع جديد كالعادة وليكن WinForm وسمه ما تشاء

post-112245-052958900 1281046501_thumb.j

من القامة الجانبية اختر dtata ثم ado.net Entity dataModel كما في الصورة

post-112245-002667700 1281046510_thumb.j

لتظهر نافذة اخرى اختر منها EmptyModel واضغط على Finish

post-112245-024622100 1281046518_thumb.j

لتفتح صفحة Entity Data Model Designer وهنا سننشاء الكلاسات بشكل رسومي الى حدا ما

post-112245-036670300 1281046527_thumb.j

نضغط كيلك يمين على اي مكان داخل الصفحة ثم نختار add وبعدها entity

post-112245-005834000 1281046537_thumb.j

لتظهر نافذة اخرى تطلب منا اداخل اسم لهذه ال entity

post-112245-027027200 1281046544_thumb.j

في Entity Name ضع اسما من اختيارك ومن Prperty Name ضع اسم المفتاح الرئيسي اما Prperty Type فيطلب منك نوع الحقل اخير اضغط على oK

فتظهر الكتلة كما هو في الصورة بها حقل واحد فقط

post-112245-014212500 1281046553_thumb.j

لندرج حقول اخرى يتعين علينا ان نضغط كليك يمن على راس الكتلة ونختار من القائمة الفرعية Add ثم Scalar Property

post-112245-017810000 1281046561_thumb.j

ليظهر حقل جديد باسم افتراضي لك ان تغييره كما تشاء وتختار نوعه ايضا بل حتى طوله من القائمة Property

post-112245-088267100 1281046568_thumb.j

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

post-112245-048782800 1281046575_thumb.j

بعد ان تنشاء كتلة اخرى اختر من قائمة الادوات Association

post-112245-085264400 1281046583_thumb.j

وبالسحب و من الكتلة الاولى الى الثانية او العكس اسقطها في الحقول المعنية بالارتباط لترى ان الارتباط قد انشاء بين الكتلتين وظهر اسم كل كتلة اسفل الكتلتين

post-112245-045521500 1281046591_thumb.j

ومن الممكن ان تتحكم في خصائص الارتباط ايضا عن طريق القائمة Property في الخاصية End2Multiplicity و اختر نوع الارتباط الذي تريد

post-112245-091666600 1281046600_thumb.j

الخطوة الاخيرة هي انشاء الجداول ولعمل ذلك كليك يمين على صفحة العمل Entity Data Model Designer ثم Generate Data Base From Model

post-112245-005100800 1281046611_thumb.j

لتظهر نافذة تطلب منك ان تختار ال Connction string اختر الذي يناسبك ثم اضغط على Next

post-112245-006677500 1281046624_thumb.j

اكمل العملية

post-112245-057670100 1281046632_thumb.j

في الاخير تظهر هذة النافذة والتي اذ تمعنت فيها تسجد انها تحمل اكواد واستعلامات لانشاء الجداول والمفاتيح الاساسية للجداول والاتباطات

اضغط على Finish

post-112245-027956400 1281046641_thumb.j

هنا نكون قد وصلنا الى نهاية مرحلة انشاء الجداول

الى لقاء اخر ان شاء الله وفقنا الله وايكم لما يحبه ويرضاه

المرفقات
1.JPG2.JPG3.JPG4.JPG5.JPG6.JPG7.JPG8.JPG9.JPG10.JPG11.JPG12.JPG13.JPG14.JPG15.JPG16.JPG17.JPG

تم تعديل هذه المشاركة بواسطة علي .ع في 6 أغسطس 2010 في 02:30

3

اللهم علمنا ما ينفعنا وانفعنا بما علمتنا وانفع الناس بنا واغفر لنا وارحمنا

#7

موضوع جميل تابع على بركة الله

ربنا يجزيك كل خير

1

In bad state

#8

شكرا لك اخ على ،،،، متابع

1
#9

السلام عليكم

اخي الكريم

انا استخدم فيجول ستوديو 2008 هل هذه التقنية موجودة فيها

ولو سألت عن سعر 2010 بدولار وهل في وكيل في ليبيا لها ام لا وشكرا لك

تزودوا فأن خيرا الزاد التقوى

اللهم انصر اخواننا المسلمين المجاهدين في كل مكان

#10
Jamalbootruba كتب:

السلام عليكم

اخي الكريم

انا استخدم فيجول ستوديو 2008 هل هذه التقنية موجودة فيها

ولو سألت عن سعر 2010 بدولار وهل في وكيل في ليبيا لها ام لا وشكرا لك

اخي الكريم هي موجودة .

لماذا تريد ان تشتريه توجد نسخ مجانية منه ما تسمى ال express حاول تنزيلها من موقع ما يكروسوفت

شغالة وتمام كمان

بالتوفيق

In bad state

#11

السلام عليكم ورحمة الله وبركاته

التقنية موجودة على اصدارة dotnet 3.5 فما فوق باماكانك اضافتها الى النسخة 2008 من الفيجوال ستديو

وان شاء الله سوف نتطرق الى ذلك في مواضيعنا القادمة

ولو اني افضل ان تستخدم نسخة express التي اشار اليها الاخ X-File

وفقنا الله واياكم لما يحبه ويرضاه

1

اللهم علمنا ما ينفعنا وانفعنا بما علمتنا وانفع الناس بنا واغفر لنا وارحمنا

#12

السلام عليكم

اخ على لو تسمح ان اضع هذا

http://www.delphi4arab.com/forum/showthread.php?t=3421&page=5

انها رابطة لاول مشروع و كما تعلم اننا الدلفاويين جديدين في ميدان الدوت نت لذلك احب من اصحاب الخبرة هنا ان يعينوننا .شكرا

كنت اود ان اطرح المشروع هنا لكن لقلة المشاركات اردت التغيير.

#13
علي .ع كتب:

السلام عليكم ورحمة الله وبركاته

التقنية موجودة على اصدارة dotnet 3.5 فما فوق باماكانك اضافتها الى النسخة 2008 من الفيجوال ستديو

وان شاء الله سوف نتطرق الى ذلك في مواضيعنا القادمة

ولو اني افضل ان تستخدم نسخة express التي اشار اليها الاخ X-File

وفقنا الله واياكم لما يحبه ويرضاه

أخي الكريم انا عندي

.net framework 3.5 ولكن لم اجد هذه التقنية

أرجو اخباري اين اجدها

تزودوا فأن خيرا الزاد التقوى

اللهم انصر اخواننا المسلمين المجاهدين في كل مكان

#14

السلام عليكم ورحمة الله وبركاته

بدا ذي بدا اهنىء الاخوة بقدوم الشهر الفضيل اعاده الله علينا وعليكم باليمن واليسر والبركة

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

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

Linq هي تقنية استعلام جديدة طورتها ميكروسوفت وهي اختصار ل Language Integrated Query ولا يقتصر استخدمها على قواعد البيانات فقط وانما تعدت ذلك فستطيع ان تضع استعلامات عن المصفوفات

و ال Object وملفات Xml وغير ذلك اما اهم ماجاءت به هذه التقنية فهو تضمين كود الاستعلام في كود البرمجة اي انه لا تحتاج الى تعرف متغيير وتضع فيه الاستعلام لن اطيل في الكلام عن linq

توجود موضيع عديدة للتقنية يمكنكم متابعتها.

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

            CollegesEntities obj = new CollegesEntities();
            var Studtbl = from c in obj.Students
                          select new { c.StudentID, c.StudentName, c.Address, c.idJurisdiction };
            dataGridView1.DataSource = Studtbl;

وبامكانك ايضا ان تضع استعلاما مشروطا كالتالي

 CollegesEntities obj = new CollegesEntities();
            var Studtbl = from c in obj.Students
where c.idJurisdiction ==5
                          select new { c.StudentID, c.StudentName, c.Address, c.idJurisdiction };
            dataGridView1.DataSource = Studtbl;

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

وفقنا الله وايكم لما يحبه ويرضاه

تم تعديل هذه المشاركة بواسطة علي .ع في 13 أغسطس 2010 في 01:31

1

اللهم علمنا ما ينفعنا وانفعنا بما علمتنا وانفع الناس بنا واغفر لنا وارحمنا

#15

بسم الله الرحمن الحخيم

شكرا أخي الكريم علي هذ الموضوع الممتاز

#16

السلام عليكم ورحمة الله وبركاته

كل عام وانتم بخير اعاده الله علينا وعليكم باليمن اليسر والبركة

اسف لتاخر في وضع الدرس لاستكمال موضوعنا

ودون اطالة سنتطرق اليوم الى موضوع الاضافة الحذف والتعديل اولا الاضاف

ضع button على الفورم و 4 textBox ثم اكتب في حدث الضغط على الزر اكتب الكود التالي

            CollegesEntities obj = new CollegesEntities();
            Students NewStudent = new Students(){StudentName=textBox2.Text,Address=textBox3.Text,Jurisdiction=int.Parse(textBox4.Text)};
            obj.AddToStudents(NewStudent);
            obj.SaveChanges();

اما التعديل يفترض بنا اولا ان نبحث عن السجل المطلب لتعديل ثم نعدل عليه

لذل ضع button للتعديل و TextBox واكتب الكود التالي

  CollegesEntities obj = new CollegesEntities();
            var UpdateSudent = (from c in obj.Students
                          where c.StudentID==int.Parse(textBox5.Text)
                          select c ).First();
            UpdateSudent.StudentName = textBox2.Text;
            UpdateSudent.Address = textBox3.Text;
            UpdateSudent.Jurisdiction = int.Parse(textBox4.Text);
            obj.SaveChanges();

اخيرا نتطرق الى الحذف

يجب في الحذف ايضا البحث عن السجل الذي نود ان نحذفه ثم نقوم بالعملية لذلك اضف Button للحذف

واكتب الكود في حدث الضغط على الزر

            CollegesEntities obj = new CollegesEntities();
            var DeleteSudent = (from c in obj.Students
                          where c.StudentID==int.Parse(textBox4.Text)
                          select c ).First();
 obj.DeleteObject(DeleteSudent);

اتمنى ان اكون قد وفقت في تقديم هذا الموضوع وان كان هناك اي لبس او ابهام يرجى تنبيهي لذلك

وفقنا الله واياكم لما يحبه ويرضاه

1

اللهم علمنا ما ينفعنا وانفعنا بما علمتنا وانفع الناس بنا واغفر لنا وارحمنا

#17

السلام عليكم ورحمه الله وبركاته

جزاك الله خيرا

تقنيه رائعه سحريه

لكن الlinq

بطئ نسبيا

فما هو حال ال entity framwork performance???

والحمد لله انا استخدمها وعملت بها شغل قبل كده

فهل تستخدم فى مشاريع لحد كام جدول؟؟؟

يعنى تنفع فى مشاريع كبيره ولا لحد 20جدول وبس

وسؤال تانى هل سعر البرنامج اللى تم عمله بالado.net

مساو لسعر برنامج معمول بالlinq or entity

حيث ان التقنيتان الاخرتين توفر جهدا كثيرا

نقطه مهمه جدا ياريت حد يفيدنى فيها

سوال ثالث هل سعر البرنامج windows

يساوى فى تكلفته لو كان على الويب-يعنى لو برنامج صيدليه على الويب والاخر هو هو بس على الويندوز

بفرض ان كلا من البرنامجين متساويين فى عدد الجداول

جزاكم الله خيرا

تم تعديل هذه المشاركة بواسطة hady_matrix في 8 أكتوبر 2010 في 07:46

يامقلب القلوب ثبت قلبى على دينك

محمد بن سعيد بن رسلان

#18

بارك الله فيك يا أخ علي ... موضوع جميل

هل أفهم من موضوعك أن هذه التقنية يمكن أن تجعلني أضيف أو أعدل في قاعدة البيانات بدون إستخدام SqlCommand؟

سؤال آخر :كيف يمكن أن أغير خصائص حقل معين و يتم تطبيق هذا التغيير على الجدول في قاعدة البيانات؟

#19

بارك الله فيك

#20

السلام عليكم

هل هناك كتب تتحدث عن هذه التقنية بأكثر تفصيلا لأني لدي الكثير من الاسئلة ولااريد ان اتعب الاخوان هنا فلو تكرمت ان تضع لنا كتب او مقالات مزودة بأمثلة اكون شاكر لك

تزودوا فأن خيرا الزاد التقوى

اللهم انصر اخواننا المسلمين المجاهدين في كل مكان

#21

EDM et methode de 3 tiers comment fonctionne

j'ai besoin d'un exemple appilication

pleaaaaaaaaaaase :)

#22

السلام عليكم ...

موضوع مميز فعلا ....

و هنا مشاركة تحدثنا فيها عن الوراثة و العلاقة many-to-many رابط

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#24

مشكور أخي ولكن لدي توضيح لبعض الأخوه ..

Entity Frameworks هو عباره عن ORM وهو إختصار ل Object Relational Mapping .. بمعنى أنك تتعامل مع قواعد البيانات كما لو أنك تتعامل مع كلاس class .

وتنسى شي إسمه التعامل مع sqlCommand .

طبعا هذه الفكره بدأت بالجافا وكان أول تقنية هي Hibernate Frameworks .

1
#25

أظن أن التركيز مؤخرا أصبح على تقنية Linq ومنها Linq to SQL و أظن أنها تشمل التقنيات القديمة

ما أقبـح المعصية ، تذهب لذتها ويبقى إثمها ... ومأ أحسن الطاعة ، تذهب مشقتها ويبقى ثوابها

كل نعيم دون الجنة غرور ... وكـل شقـاء دون النـار سرور

الدورة التطبيقية لتعليم التصميم بالإليستريتور

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