• 0
علوي علي

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

سؤال

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

سنتناول اليوم موضوع جديد عن 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

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

5

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

30 إجابة على هذا السؤال .

  • 0

السلام عليكم

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكرا اخي على

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

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

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

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

اولا انا اعتذر اخي 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

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

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

تم تعديل بواسطه علي .ع
3

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

اخي الكريم

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

اخي الكريم

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

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

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

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

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

بالتوفيق

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

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

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

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

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

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

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

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

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

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

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

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

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

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

سوف تختصر الطريق على نفسك ان كنت قد عملت على تقنية 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;

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

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

تم تعديل بواسطه علي .ع
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

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

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

ضع 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

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

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

لكن الlinq

بطئ نسبيا

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

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

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

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

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

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

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

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

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

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

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

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

تم تعديل بواسطه hady_matrix
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

EDM et methode de 3 tiers comment fonctionne

j'ai besoin d'un exemple appilication

pleaaaaaaaaaaase :)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

اخي الكريم

جزاك الله خيرا علي تعبك

والله الموفق والمستعان

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

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

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

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

مشكوووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووور

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

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

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



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .