السلام عليكم ورحمةالله وبركاتة
عاوز اعرف مفهوم وتعربف ل Dataset,Entity Framework,LINQtoSQL
و الفرق بينهم وبين بعض باسلوب عملي وليس نظري
الفرق بين Dataset,Entity Framework,LINQtoSQL
وعليكم السلام ورحمة الله.
أهم نقطة بالموضوع أن جميع هذه التقينات تعتمد بالأساس على مفهوخ ADO.NET، الخاص بتقينات ميكروسوفت
أما الفرق الأساسي في كل تقنية يكاد يكون في السلوك أكثر من الأداء،
1. DataSet: لها نوعان DataSet, TypedDataSet، أي بالإمكان تعريف DataSet خاصة بنوع البيانات المطابق لقاعدة البيانات، وهي تحوي على نمط لتصميمها وتعريف الجداول وربطها بقاعدة البيانات. ( ويتم التحدث مع قاعدة البيانات عن طريق استعلامات SQL المعروفة)
2. LINQtoSQL: لها نمط تصميم أيضا، بالإضافة أنها تعتمد على LINQ للتحدث مع قاعدة البيانات نستخدم (LINQ)، والتي تعطيك مرونة أكثر في طلب البيانات وإنشاء الاستعلامات. يجب أن يكون هناك انعكاس لقاعدة البيانات الفيزيائية (المعرفة ضمن SQL) مع تصميم LINQtoSQL المعرف ضمن مشروعنا، وأي اختلاف بين الاثنين سيعطي خطأ.
3. Entity Framework: تعتبر أفضل تقنية (طبقة تواصل مع قاعدة البيانات). لها مواصفات عمل (LINQtoSQL). ولكن بالنسبة Entity التحدث لن يكون مباشر إلى قاعدة البيانات وانما إلى Conceptual Model وهو انعكاس لقاعدة البيانات + مجموعة من التعريفات الإضافية على هذه الطبقة لتخصيص وتوسيع العمل أكثر. لنأخذ مثال صغير مثلاً.
تخيل لدينا جدول يسمى مستخدم (User) بقاعدة البيانات، ويحوي مجموعة من المستخدمين يقسمون إلى (Admin, Member, User). طبعا يتم التمييز بين كل نوع عن طريق حقل (النوع). ضمن Conceptual Model يمكننا فصل الجدول إلى ثلاث جداول (AdminUser, MemberUser, NormalUser). حيث نقوم بعمل كلاسات ترث من كلاس User ، وضمن الكود نتعامل مع AdminUser بدل User وعن التخزين أو التعديل، يتم إرجاعه ضمنيا إلى الحقل المناسب ضمن جدول User، بالتالي يكون التعامل برمجياً أسهل وأوسع. قس هذا الأمر على نماذج واسعة.
ملاحظة: LINQtoSQL قام بتطويرها فريق #C ضمن ميكروسوفت، أما Entity Framework قام بتطويرها فريق ADO.NET ضمن ميكروسوفت، ورغم أن الطريقتين تعتمدان على LINQ للاستعلامات، إلى أن البنية الداخلة تختلف اختلافا واضحا.
LINQtoSQL تعتمد على SqlClient للتحدث مع قاعدة البيانات.
Entity Framework تعتمد على EntityClient للتحدث مع قاعدة البيانات.
بالنهاية هناك درس قيد التطوير إن شاء الله، يوضح طرق إنشاء هذه الطبقات وربطها بالمشروع بالطريقة الصحيحة
• • •
[ ربيّ احفظ سوريا الحبيبة]

السلام عليكم .. هذه مقالة من كتاباتي عن LINQ to SQL
/index.php/topic/278038-شرحالتعامل-مع-قاعدة-البيانات-بإستخدام-linqtosql/#entry1340091