إطار عمل الكيانات

إطار عمل الكيانات ( EF ) هو إطار عمل مفتوح المصدر [ 2 ] لربط الكائنات بالعلاقات (ORM) لـ ADO.NET . تم إصداره في الأصل كجزء لا يتجزأ من إطار عمل .NET ، ولكن بدءًا من إصدار Entity Framework 6.0، أصبح يُقدم بشكل منفصل عن إطار عمل .NET.

كان Entity Framework 6.4 أحدث إصدار من الإطار الكلاسيكي. على الرغم من أن Entity Framework 6 لا يزال مدعومًا، إلا أنه لم يعد قيد التطوير، ولن يتلقى سوى إصلاحات للمشاكل الأمنية. [ 3 ]

تم طرح إطار عمل جديد يُعرف باسم Entity Framework Core (EF Core) في عام 2016، ويحتوي على ميزات مشابهة ولكنها ليست متطابقة تمامًا. [ 4 ] وقد أعيد ترقيم إصدارات هذا الإطار بدءًا من الإصدار 1.0.

ملخص

إطار عمل الكيانات (Entity Framework) هو مجموعة من التقنيات في ADO.NET تدعم تطوير تطبيقات البرمجيات الموجهة نحو البيانات. لطالما واجه مهندسو ومطورو هذه التطبيقات صعوبة في تحقيق هدفين مختلفين تمامًا: نمذجة الكيانات والعلاقات والمنطق الخاص بمشاكل الأعمال التي يسعون لحلها، والتعامل في الوقت نفسه مع محركات البيانات المستخدمة لتخزين البيانات واسترجاعها. قد تمتد البيانات عبر أنظمة تخزين متعددة، لكل منها بروتوكولاتها الخاصة؛ حتى التطبيقات التي تعمل مع نظام تخزين واحد يجب أن توازن بين متطلبات نظام التخزين ومتطلبات كتابة كود برمجي فعال وقابل للصيانة. تُعرف هذه المشكلة عمومًا باسم " عدم توافق المعاوقة بين الكائنات والعلاقات ". [ 5 ]

طُوِّرت العديد من أدوات ربط الكائنات العلائقية (ORM) (المعروفة أيضًا باسم "مديري الكائنات العلائقية") لتمكين المطورين من التعامل مع البيانات على شكل كائنات وخصائص خاصة بمجال معين، مثل العملاء وعناوينهم، دون الحاجة إلى الاهتمام بجداول وأعمدة قواعد البيانات الأساسية التي تُخزَّن فيها هذه البيانات. باستخدام ORM، يستطيع المطورون العمل على مستوى أعلى من التجريد عند التعامل مع البيانات، وإنشاء تطبيقات موجهة نحو البيانات وصيانتها باستخدام كود أقل مقارنةً بالتطبيقات التقليدية. يُعدّ Entity Framework حل ORM المُروَّج له حاليًا للاستخدام ضمن حزمة تطوير Microsoft. [ 6 ]

تاريخ

تم تضمين الإصدار الأول من Entity Framework (EFv1) مع حزمة الخدمة الأولى لـ .NET Framework 3.5 وحزمة الخدمة الأولى لـ Visual Studio 2008 ، والتي صدرت في 11 أغسطس 2008. وقد تعرض هذا الإصدار لانتقادات واسعة، حتى أنه حظي بـ"تصويت بحجب الثقة" وقعه ما لا يقل عن ألف مطور. [ 7 ]  

تم إصدار الإصدار الثاني من Entity Framework، المسمى Entity Framework 4.0 (EFv4)، كجزء من .NET 4.0 في 12 أبريل 2010، وقد عالج العديد من الانتقادات الموجهة للإصدار 1. [ 8 ]

تم إصدار نسخة ثالثة من Entity Framework، الإصدار 4.1، في 12 أبريل 2011، مع دعم Code First.

تم إصدار تحديث للإصدار 4.1، والذي يحمل اسم Entity Framework 4.1 Update 1، في 25 يوليو 2011. ويتضمن إصلاحات للأخطاء وأنواعًا جديدة مدعومة.

تم إصدار الإصدار 4.3.1 في 29 فبراير 2012. [ 9 ] كانت هناك بعض التحديثات، مثل دعم الترحيل.

تم إصدار النسخة 5.0.0 في 11 أغسطس 2012 [ 10 ] وهي مصممة للعمل مع إطار عمل .NET 4.5. كما تتوفر هذه النسخة لإطار عمل .NET 4، ولكن دون أي مزايا في وقت التشغيل مقارنةً بالنسخة 4.

صدرت النسخة 6.0 في 17 أكتوبر 2013 [ 11 ] ، وهي الآن مشروع مفتوح المصدر مرخص بموجب رخصة أباتشي الإصدار 2. ومثل ASP.NET MVC ، يُستضاف كود المصدر الخاص بها على GitHub باستخدام Git. [ 12 ] تتضمن هذه النسخة عددًا من التحسينات لدعم منهجية Code-First . [ 13 ]

قررت مايكروسوفت بعد ذلك تحديث .NET، وتقسيمه إلى مكونات، وجعله متوافقًا مع أنظمة تشغيل متعددة مثل لينكس، وماك، وغيرها، مما يعني أن الإصدار التالي من Entity Framework سيكون إعادة كتابة كاملة. [ 14 ] في 27 يونيو 2016، تم إصداره باسم Entity Framework Core 1.0، إلى جانب ASP.NET Core 1.0 و.NET Core 1.0. [ 15 ] كان يُسمى في الأصل Entity Framework 7، ولكن تم تغيير اسمه للتأكيد على أنه إعادة كتابة كاملة وليس ترقية تدريجية، وأنه لا يحل محل EF6. [ 16 ]

يُرخَّص Entity Framework Core 1.0 بموجب رخصة Apache الإصدار 2، وقد بُني بالكامل بشكل مفتوح المصدر على GitHub . وبينما يتشارك Entity Framework Core 1.0 بعض أوجه التشابه المفاهيمية مع الإصدارات السابقة من Entity Framework، إلا أنه قاعدة بيانات جديدة كليًا مصممة لتكون أكثر كفاءة وقوة ومرونة وقابلية للتوسيع، وتعمل على أنظمة Windows وLinux وOSX، وتدعم مجموعة جديدة من قواعد البيانات العلائقية وقواعد بيانات NoSQL . [ 14 ]

تم إصدار Entity Framework Core 2.0 في 14 أغسطس 2017 ( 2017-08-14 ) جنبًا إلى جنب مع Visual Studio 2017 15.3 و ASP.NET Core 2.0 [ 17 ]  

تم إصدار Entity Framework Core 3.0 في 23 سبتمبر 2019 ( 2019-09-23 ) جنبًا إلى جنب مع Visual Studio 2019 16.3 و ASP.NET Core 3.0، [ 18 ]  

تم إصدار Entity Framework Core 3.1 (EF Core 3.1) رسميًا للاستخدام في بيئات الإنتاج في 3 ديسمبر 2019 ( 2019-12-03 ) ، وسيكون الإصدار المفضل المدعوم على المدى الطويل حتى 3 ديسمبر 2022 على الأقل. [ 19 ] [ 20 ]  

تم إصدار Entity Framework Core 5.0 ( EF Core 5) للاستخدام الإنتاجي في 9 نوفمبر 2020. [ 19 ] [ 20 ] وتم إيقاف دعمه بعد عام ونصف، في 10 مايو 2022. [ 21 ]  

تم إصدار Entity Framework Core 6.0 (EF Core 6) في 10 نوفمبر 2021 ( 2021-11-10 ) [ 22 ] [ 23 ] وسيكون الإصدار المفضل المدعوم على المدى الطويل حتى 12 نوفمبر 2024 على الأقل. [ 24 ]  

تم إصدار Entity Framework Core 7.0 (EF Core 7) في 8 نوفمبر 2022 ( 2022-11-08 ) [ 25 ] [ 26 ] بإضافة ميزات مثل أعمدة JSON والتحديثات المجمعة .  

تم إصدار Entity Framework Core 8.0 (EF Core 8) في 14 نوفمبر 2023 ( 2023-11-14 ) [ 27 ] [ 28 ] بإضافة ميزات مثل كائنات القيمة باستخدام الأنواع المعقدة والمجموعات الأولية .  

بنيان

مجموعة أدوات ADO.NET Entity Framework.

يتكون هيكل إطار عمل ADO.NET Entity Framework، من الأسفل إلى الأعلى، مما يلي:

  • موفرو البيانات الخاصة بمصدر البيانات ، الذين يقومون بتجريد واجهات ADO.NET للاتصال بقاعدة البيانات عند البرمجة وفقًا للمخطط المفاهيمي.
  • موفر الخرائط ، وهو موفر خاص بقاعدة البيانات، يقوم بترجمة شجرة أوامر SQL الخاصة بالكيان إلى استعلام بلغة SQL الأصلية لقاعدة البيانات. ويتضمن جسرًا خاصًا بالمتجر ، وهو المكون المسؤول عن ترجمة شجرة الأوامر العامة إلى شجرة أوامر خاصة بالمتجر.
  • يقوم محلل EDM ورسم خرائط العرض ، الذي يأخذ مواصفات SDL لنموذج البيانات وكيفية ربطها بالنموذج العلائقي الأساسي، بتمكين البرمجة بناءً على النموذج المفاهيمي. انطلاقًا من المخطط العلائقي، يُنشئ طرق عرض للبيانات تتوافق مع النموذج المفاهيمي. كما يقوم بتجميع المعلومات من جداول متعددة لدمجها في كيان واحد، ويقسم تحديث الكيان إلى عدة تحديثات للجداول التي ساهمت في تكوينه.
  • يقوم خط أنابيب الاستعلام والتحديث بمعالجة الاستعلامات وتصفية وتحديث الطلبات لتحويلها إلى أشجار أوامر أساسية يتم تحويلها بعد ذلك إلى استعلامات خاصة بالمتجر بواسطة موفر الخريطة.
  • خدمات البيانات الوصفية ، التي تتعامل مع جميع البيانات الوصفية المتعلقة بالكيانات والعلاقات والتعيينات.
  • تُستخدم المعاملات للتكامل مع إمكانيات المعاملات في المتجر الأساسي. إذا كان المتجر الأساسي لا يدعم المعاملات، فيجب تنفيذ دعمها في هذه الطبقة.
  • واجهة برمجة التطبيقات للطبقة المفاهيمية ، وهي بيئة التشغيل التي تعرض نموذج البرمجة لكتابة التعليمات البرمجية وفقًا للمخطط المفاهيمي. وهي تتبع نمط ADO.NET باستخدام كائنات الاتصال للإشارة إلى موفر الخريطة، واستخدام كائنات الأوامر لإرسال الاستعلام، وإرجاع مجموعات نتائج الكيانات أو مجموعات الكيانات التي تحتوي على النتيجة.
  • المكونات غير المتصلة ، التي تقوم بتخزين مجموعات البيانات ومجموعات الكيانات محليًا لاستخدام إطار عمل ADO.NET Entity Framework في بيئة متصلة بشكل متقطع.
  • قاعدة البيانات المضمنة : يتضمن إطار عمل ADO.NET Entity قاعدة بيانات مضمنة خفيفة الوزن للتخزين المؤقت من جانب العميل والاستعلام عن البيانات العلائقية.
  • تتضمن أدوات التصميم ، مثل مصمم الخرائط، أيضًا إطار عمل كيانات ADO.NET، مما يبسط مهمة ربط المخطط المفاهيمي بالمخطط العلائقي وتحديد خصائص نوع الكيان التي تتوافق مع أي جدول في قاعدة البيانات.
  • طبقة البرمجة ، التي تعرض نموذج البيانات الإلكترونية كبنى برمجية يمكن استهلاكها بواسطة لغات البرمجة.
    • تقوم خدمات الكائنات تلقائيًا بإنشاء التعليمات البرمجية لفئات CLR التي تعرض نفس الخصائص مثل الكيان، مما يتيح إنشاء الكيانات ككائنات .NET.
    • خدمات الويب ، التي تعرض الكيانات كخدمات ويب.
  • الخدمات عالية المستوى ، مثل خدمات إعداد التقارير التي تعمل على الكيانات بدلاً من البيانات العلائقية.

نموذج بيانات الكيان

يُحدد نموذج بيانات الكيانات ( EDM ) النموذج المفاهيمي (CSDL) للبيانات، باستخدام تقنية نمذجة تُسمى بدورها نموذج بيانات الكيانات، وهي نسخة موسعة من نموذج الكيانات والعلاقات . [ 29 ] يصف نموذج البيانات بشكل أساسي الكيانات والارتباطات التي تشارك فيها. يُعبَّر عن مخطط EDM بلغة تعريف المخطط (SDL)، وهي تطبيق للغة XML (لغة الترميز الموسعة). بالإضافة إلى ذلك، يجب تحديد عملية الربط (MSL) بين عناصر المخطط المفاهيمي (CSDL) ومخطط التخزين (SSDL). تُعبَّر مواصفات الربط أيضًا بلغة XML. [ 30 ]

نموذج كيان تم إنشاؤه باستخدام Entity Framework 6 والذي يمثل جداول العميل والطلب والمنتج

يوفر Visual Studio أيضًا مصمم الكيانات لإنشاء نموذج بيانات المؤسسة (EDM) ومواصفات الربط بشكل مرئي. يُعرف هذا النهج باسم "نهج النموذج أولًا"، كبديل لنهجي "البرمجة أولًا" و"قاعدة البيانات أولًا". يُخرج البرنامج ملف XML (*.edmx) يحدد المخطط والربط. يحتوي ملف edmx على عناصر بيانات تعريف EF (محتوى CSDL/MSL/SSDL). يمكن أيضًا إنشاء هذه الملفات الثلاثة (csdl، msl، ssdl) أو تعديلها يدويًا. لن يدعم إصدار EF Core نهج "النموذج أولًا". [ 31 ]

رسم الخرائط

يقوم معالج نموذج بيانات الكيانات [ 32 ] في Visual Studio بإنشاء ربط مباشر (واحد لواحد) بين مخطط قاعدة البيانات والمخطط المفاهيمي في معظم الحالات. في المخطط العلائقي، تتكون العناصر من الجداول، حيث تربط المفاتيح الأساسية والأجنبية الجداول ذات الصلة. في المقابل، تحدد أنواع الكيانات المخطط المفاهيمي للبيانات.

تُمثل أنواع الكيانات تجميعًا لحقول متعددة مُصنفة - حيث يرتبط كل حقل بعمود معين في قاعدة البيانات - ويمكن أن تحتوي على معلومات من جداول فعلية متعددة. ويمكن ربط أنواع الكيانات ببعضها البعض، بغض النظر عن العلاقات في المخطط الفعلي. كما تُعرض الكيانات المرتبطة بطريقة مماثلة - عبر حقل يُشير اسمه إلى العلاقة التي تشارك فيها، وعند الوصول إليه، بدلاً من استرداد القيمة من عمود معين في قاعدة البيانات، فإنه يجتاز العلاقة ويعيد الكيان (أو مجموعة الكيانات) المرتبط به.

تُشكّل أنواع الكيانات فئة الكائنات التي تنتمي إليها الكيانات، حيث تُمثّل الكيانات نسخًا من أنواع الكيانات. تُمثّل الكيانات كائنات فردية تُشكّل جزءًا من المشكلة التي يُعالجها التطبيق، ويتم فهرستها بواسطة مفتاح. على سبيل المثال، عند تحويل المخطط المادي الموصوف أعلاه، سيكون لدينا نوعان من الكيانات:

  • CustomerEntity ، الذي يحتوي على اسم العميل من جدول العملاء ، وعنوان العميل من جدول جهات الاتصال .
  • OrderEntity ، الذي يغلف طلبات عميل معين، ويسترجعها من جدول الطلبات .

يُمثَّل المخطط المنطقي وتطابقه مع المخطط الفعلي بنموذج بيانات الكيانات (EDM)، المُحدد كملف XML. يستخدم إطار عمل كيانات ADO.NET نموذج بيانات الكيانات (EDM) لإجراء عملية الربط، مما يسمح للتطبيق بالتعامل مع الكيانات، مع إخفاء استخدام بنيات ADO.NET مثل DataSet و RecordSet داخليًا . يُجري إطار عمل كيانات ADO.NET عمليات الربط اللازمة للحصول على معلومات مرجعية عن الكيانات من جداول متعددة، أو عند اجتياز علاقة. عند تحديث كيان، يتتبع الجدول الذي جاءت منه المعلومات ويُصدر عبارات تحديث SQL لتحديث الجداول التي تم تحديث بعض البيانات فيها. يستخدم إطار عمل كيانات ADO.NET لغة eSQL، وهي مشتقة من SQL، لإجراء الاستعلامات وعمليات نظرية المجموعات والتحديثات على الكيانات وعلاقاتها. تُترجم الاستعلامات المكتوبة بلغة eSQL، عند الحاجة، إلى لغة SQL الأصلية لقاعدة البيانات الأساسية.

تُشكّل أنواع الكيانات ومجموعات الكيانات المخطط المنطقي لنموذج بيانات الكيانات (EDM)، ويمكن عرضها بأي شكل. يتضمن إطار عمل ADO.NET Entity Framework خدمة الكائنات التي تُقدّم هذه الكيانات ككائنات ، مع عرض العناصر والعلاقات كخصائص. بالتالي، تُعدّ كائنات الكيانات واجهة أمامية لأنواع كيانات نموذج بيانات الكيانات، مما يسمح للغات البرمجة كائنية التوجه بالوصول إليها واستخدامها. وبالمثل، يمكن إنشاء واجهات أمامية أخرى لعرض الكيانات عبر خدمات الويب (مثل خدمات بيانات WCF ) أو XML المستخدم عند تسلسل الكيانات لتخزينها بشكل دائم أو لنقلها عبر الشبكة. [ 33 ]

الكيانات

الكيانات هي نسخ من أنواع الكيانات ؛ فهي تمثل النسخ الفردية للكائنات (مثل العملاء ، الطلبات ) التي تتعلق بها المعلومات. تُحدد هوية الكيان بنوع الكيان الذي ينتمي إليه؛ وبهذا المعنى، يُحدد نوع الكيان الفئة التي ينتمي إليها الكيان، ويُحدد خصائصه . تصف الخصائص جانبًا من جوانب الكيان من خلال إعطائه اسمًا ونوعًا. خصائص نوع الكيان في إطار عمل ADO.NET Entity Framework مُحددة الأنواع بالكامل، ومتوافقة تمامًا مع نظام الأنواع المستخدم في نظام إدارة قواعد البيانات، بالإضافة إلى نظام الأنواع المشترك لإطار عمل .NET. يمكن أن تكون الخاصية من نوع SimpleType أو ComplexType ، ويمكن أن تكون متعددة القيم أيضًا. تنتمي جميع أنواع الكيانات إلى مساحة اسم معينة، ولها خاصية EntityKey تُحدد كل نسخة من نوع الكيان بشكل فريد. يتم تمييز أنواع الخصائص المختلفة كما يلي:

  • يُقابل SimpleType أنواع البيانات الأولية مثل الأعداد الصحيحة والأحرف والأعداد العشرية . [ 34 ]
  • النوع المعقد (ComplexType ) هو مجموعة من خصائص متعددة من النوع البسيط (SimpleType) أو النوع المعقد (ComplexType) . على عكس أنواع الكيانات (EntityTypes )، لا يمكن أن تحتوي الأنواع المعقدة على مفتاح كيان (EntityKey ). في إطار عمل الكيانات الإصدار الأول (Entity Framework v1)، لا يمكن توريث الأنواع المعقدة . [ 35 ]

تُخزَّن جميع مثيلات الكيانات في حاويات الكيانات، وهي حاويات خاصة بكل مشروع. يحتوي كل مشروع على حاوية كيانات واحدة أو أكثر تحمل اسمًا، والتي يمكنها الإشارة إلى الكيانات عبر مساحات أسماء وأنواع كيانات متعددة. يمكن تخزين مثيلات متعددة من نوع كيان واحد في مجموعات تُسمى مجموعات الكيانات. ويمكن أن يحتوي نوع كيان واحد على مجموعات كيانات متعددة.

أنواع EDM الأولية (الأنواع البسيطة): [ 34 ] [ 36 ]

نوع EDMتعيين أنواع CLR
Edm.Binaryبايت[]
Edm.Booleanمنطقي
Edm.Byteبايت
Edm.DateTimeالتاريخ والوقت
Edm.DateTimeOffsetإزاحة التاريخ والوقت
Edm.Decimalعشري
إدمن. مزدوجمزدوج
دليل إدمندليل
Edm.Int16Int16
Edm.Int32Int32
Edm.Int64Int64
Edm.SByteإس بايت
أغنية منفردة من نوع Edmأعزب
Edm.Stringخيط
إدم.تايمالفترة الزمنية

العلاقات

يمكن ربط أي نوعين من الكيانات، إما بعلاقة ارتباط أو علاقة احتواء . على سبيل المثال، تُعدّ فاتورة الشحنة للعميل علاقة ارتباط، بينما يُعدّ احتواء الطلب على تفاصيل الطلب علاقة احتواء. كما يمكن استخدام علاقة الاحتواء لنمذجة التوريث بين الكيانات. تُحدد العلاقة بين نوعي الكيانات بنوع العلاقة ، وتُسمى مثيلاته " العلاقات" ، وهي التي تربط مثيلات الكيانات. في الإصدارات المستقبلية، قد تُضاف أنواع أخرى من العلاقات، مثل التركيب أو التعريف .

تُصنَّف أنواع العلاقات حسب درجتها (عدد الكيانات المرتبطة بها) وتعددها. مع ذلك، في الإصدار الأولي من إطار عمل ADO.NET Entity Framework، كانت العلاقات تقتصر على علاقة ثنائية الاتجاه (من الدرجة الثانية). يُحدد التعدد عدد مثيلات الكيانات التي يمكن ربطها معًا. وبناءً على التعدد، يمكن أن تكون العلاقات إما علاقة واحد إلى واحد، أو واحد إلى متعدد، أو متعدد إلى متعدد. تُسمى العلاقات بين الكيانات، ويُطلق على هذا الاسم "دورًا". يُحدد هذا الدور الغرض من العلاقة.

يمكن أن يرتبط نوع العلاقة بعملية أو إجراء ، مما يسمح بتنفيذ إجراء معين على كيان ما عند تنفيذ إجراء آخر على كيان مرتبط به. يمكن تحديد العلاقة لتنفيذ إجراء معين عند تنفيذ عملية معينة على كيان مرتبط بها. على سبيل المثال، عند حذف كيان يشكل جزءًا من علاقة ( عملية الحذف )، تكون الإجراءات التي يمكن اتخاذها هي: [ 37 ]

  • Cascade ، الذي يوجه لحذف مثيل العلاقة وجميع مثيلات الكيان المرتبطة به.
  • لا أحد .

بالنسبة لعلاقات الارتباط، التي يمكن أن يكون لها دلالات مختلفة على كلا الطرفين، يمكن تحديد إجراءات مختلفة لكل طرف.

لغة تعريف المخطط

يستخدم إطار عمل ADO.NET Entity Framework لغة تعريف بيانات قائمة على XML تُسمى لغة تعريف المخطط (SDL) لتعريف مخطط EDM. تُعرّف SDL الأنواع البسيطة (SimpleTypes) المشابهة للأنواع الأولية في CTS ، بما في ذلك String و Int32 و Double و Decimal و Guid و DateTime ، وغيرها. يُعتبر التعداد (Enumeration) ، الذي يُعرّف خريطة للقيم والأسماء الأولية، نوعًا بسيطًا أيضًا. يدعم إطار العمل التعدادات بدءًا من الإصدار 5.0 فقط. تُنشأ الأنواع المعقدة (ComplexTypes) من تجميع أنواع أخرى. تُعرّف مجموعة من خصائص هذه الأنواع نوع الكيان (Entity Type). يمكن كتابة هذا التعريف باستخدام قواعد EBNF كما يلي:

EntityType :: = ENTITYTYPE entityTypeName [ BASE entityTypeName ] [ ABSTRACT true | false ] KEY propertyName [, propertyName ] * {( propertyName PropertyType [ PropertyFacet ] * ) + }PropertyType ::= ( ( PrimitiveType [ PrimitiveTypeFacets ] * ) | ( complexTypeName ) | RowTypePropertyFacet ::= ( [ NULLABLE true | false ] | [ DEFAULT defaultVal ] | [ MULTIPLICITY [ 1 | * ]] )PropertyTypeFacet ::= MAXLENGTH | PRECISION | SCALE | UNICODE | FIXEDLENGTH | COLLATION | DATETIMEKIND | PRESERVESECONDSالنوع الأساسي ::= ثنائي | سلسلة نصية | منطقي | مفرد | مزدوج | عشري | معرف فريد عالمي | بايت | بايت واحد | عدد صحيح 16 بت | عدد صحيح 32 بت | عدد صحيح 64 بت | تاريخ ووقت | إزاحة التاريخ والوقت | وقت )

تُستخدم الجوانب لوصف البيانات الوصفية لخاصية ما، مثل ما إذا كانت تقبل القيم الفارغة أو لها قيمة افتراضية، وكذلك عدد عناصر الخاصية، أي ما إذا كانت ذات قيمة واحدة أو متعددة القيم. يشير الرقم "1" إلى خاصية ذات قيمة واحدة، بينما يشير الرمز "*" إلى خاصية متعددة القيم. على سبيل المثال، يمكن تمثيل كيان في لغة SDL على النحو التالي: [ 38 ]

<ComplexType Name= "Addr" > <Property Name= "Street" Type= "String" Nullable= "false" /> <Property Name= "City" Type= "String" Nullable= "false" /> <Property Name= "Country" Type= "String" Nullable= "false" /> <Property Name= "PostalCode" Type= "Int32" /> </ComplexType> <EntityType Name= "Customer" > <Key> <PropertyRef Name= "Email" /> </Key> <Property Name= "Name" Type= "String" /> <Property Name= "Email" Type= "String" Nullable= "false" /> <Property Name= "Address" Type= "Addr" /> </EntityType>

يُعرَّف نوع العلاقة بتحديد نقاط النهاية وتعددها. على سبيل المثال، يمكن تعريف علاقة واحد إلى متعدد بين العميل والطلبات على النحو التالي :

<Association Name= "CustomerAndOrders" > <End Type= "Customer" Multiplicity= "1" /> <End Type= "Orders" Multiplicity= "*" > <OnDelete Action= "Cascade" /> </End> </Association>

الاستعلام عن البيانات

لغة SQL للكيانات

يستخدم إطار عمل ADO.NET Entity Framework صيغةً من لغة الاستعلامات البنيوية تُسمى Entity SQL ، وهي مُصممة لكتابة استعلامات وتحديثات تعريفية على الكيانات وعلاقاتها - على المستوى المفاهيمي. وتختلف هذه الصيغة عن SQL في أنها لا تحتوي على بنيات صريحة لعمليات الربط، لأن EDM مُصمم لتجريد تقسيم البيانات عبر الجداول.

تُسهّل فئات EntityClient الاستعلام عن النموذج المفاهيمي ، حيث تقبل استعلام Entity SQL. يقوم مسار الاستعلام بتحليل استعلام Entity SQL إلى شجرة أوامر، موزعةً الاستعلام على جداول متعددة، ثم تُسلّم إلى موفر EntityClient. وكما هو الحال مع موفري بيانات ADO.NET، يُهيأ موفر EntityClient باستخدام كائن Connection ، الذي يتطلب، بالإضافة إلى معلمات مخزن البيانات ومعلومات المصادقة المعتادة، مخطط SDL ومعلومات الربط. يقوم موفر EntityClient بدوره بتحويل شجرة أوامر Entity SQL إلى استعلام SQL بلغة قاعدة البيانات الأصلية. ثم يُعيد تنفيذ الاستعلام مجموعة نتائج Entity SQL، التي لا تقتصر على بنية جدولية، على عكس مجموعات نتائج ADO.NET.

تعمل تقنية Entity SQL على تحسين لغة SQL من خلال إضافة دعم جوهري لما يلي:

  • الأنواع ، كما هو الحال مع كيانات ADO.NET، مكتوبة بالكامل.
  • مجموعات الكيانات ، والتي يتم التعامل معها على أنها مجموعات من الكيانات.
  • قابلية التركيب ، التي تزيل القيود المفروضة على أماكن استخدام الاستعلامات الفرعية.

الدوال الأساسية في لغة SQL الخاصة بالكيانات

تدعم جميع موفري البيانات المتوافقة مع إطار عمل الكيانات الدوال الأساسية. ويمكن استخدامها في استعلام SQL الخاص بالكيانات. كما تُترجم معظم طرق الإضافة في LINQ to Entities إلى دوال أساسية. وهي مستقلة عن أي قاعدة بيانات محددة. عندما يستقبل موفر بيانات ADO.NET دالة، فإنه يترجمها إلى عبارة SQL المطلوبة. [ 39 ]

لكن لا تمتلك جميع أنظمة إدارة قواعد البيانات وظائف متطابقة ومجموعة متطابقة من الدوال القياسية المدمجة. كما توجد اختلافات في دقة العمليات الحسابية. لذلك، لا تدعم جميع قواعد البيانات جميع الدوال الأساسية، ولا تُرجع جميع الدوال الأساسية النتائج نفسها.

مجموعةالدوال الأساسية [ 39 ]
الدوال التجميعيةالمتوسط، BigCount، العدد، الحد الأقصى، الحد الأدنى، StDev، StDevP، Sum، Var، VarP
الدوال الرياضيةABS، سقف، أرضية، طاقة، دائري، مقطوع
دوال السلاسل النصيةدمج، يحتوي على، ينتهي بـ، فهرس، يسار، طول، تقليم يساري، استبدال، عكس، يمين، تقليم يميني، سلسلة فرعية، يبدأ بـ، تحويل إلى أحرف صغيرة، تحويل إلى أحرف كبيرة، تقليم
وظائف التاريخ والوقتإضافة ميكروثانية، إضافة ميلي ثانية، إضافة ثوانٍ، إضافة دقائق، إضافة ساعات، إضافة نانوثانية، إضافة أيام، إضافة سنوات، إنشاء تاريخ ووقت، إضافة أشهر، إنشاء إزاحة التاريخ والوقت، إنشاء وقت، التاريخ والوقت الحالي، إزاحة التاريخ والوقت الحالي، التاريخ والوقت الحالي بتوقيت UTC، اليوم، يوم السنة، فرق النانوثانية، فرق الميلي ثانية، فرق الميكروثانية، فرق الثواني، فرق الدقائق، فرق الساعات، فرق الأيام، فرق الأشهر، فرق السنوات، الحصول على إجمالي إزاحة الدقائق، الساعة، ميلي ثانية، الدقيقة، الشهر، الثانية، اقتطاع الوقت، السنة
الدوال الثنائيةBitWiseAnd، BitWiseNot، BitWiseOr، BitWiseXor
وظائف أخرىنيو جايد

LINQ to Entities

يُتيح مُزوّد ​​LINQ to Entities استخدام استعلام LINQ المُدمج مع اللغة للاستعلام عن البيانات من خلال نموذج Entity Framework المفاهيمي . يُمكن للمطورين كتابة الاستعلامات بلغة C # أو Visual Basic باستخدام عوامل LINQ القياسية مثل Where` Select- ...GroupBy

لغة SQL الأصلية

تمت إضافة طريقتين جديدتين ExecuteStoreQuery() و ExecuteStoreCommand() إلى فئة ObjectContext في Entity Framework v4 .

أدوات العرض المرئي

يحتوي Visual Studio على ميزة تُسمى Visualizer. يمكن عرض استعلام LINQ المكتوب في Visual Studio كلغة SQL أصلية باستخدام Visualizer أثناء جلسة التصحيح. يتوفر Visualizer لـ LINQ to Entities (استعلام الكائنات) الذي يستهدف جميع أنظمة إدارة قواعد البيانات العلائقية في متجر Visual Studio Marketplace. [ 42 ]

تحليل الأداء

تتوفر العديد من أدوات تحليل الأداء تجارياً لاستكشاف مشكلات الأداء وإصلاحها باستخدام Entity Framework، سواءً لإصدارات EF أو EF Core.

الأدوات والإضافات - إطار عمل الكيانات الأساسي

تتوفر أدوات وإضافات Entity Framework Core لتحسين أداء Entity Framework Core. [ 43 ]

يُتيح EF Core أوامر وقت التصميم لعمليات الترحيل والهندسة العكسية عبر واجهة سطر الأوامر .NET (dotnet ef) ووحدة تحكم إدارة الحزم في Visual Studio، والتي تُنشئ DbContext وأنواع الكيانات من قاعدة بيانات موجودة. بالإضافة إلى الأدوات الرسمية، توفر عمليات التكامل مع بيئات التطوير المتكاملة (IDE) واجهات مستخدم رسومية للمهام الشائعة: تُضيف أدوات EF Core Power Tools في Visual Studio الهندسة العكسية التي تعتمد على قاعدة البيانات أولاً وتصور النماذج، بينما يُقدم Entity Developer مصممًا مرئيًا لـ EF Core يدعم منهجيات قاعدة البيانات أولاً والنموذج أولاً مع توليد التعليمات البرمجية وتكوين التعيين. تتوفر إمكانيات مماثلة في بيئات تطوير متكاملة أخرى (مثل واجهة مستخدم Rider لأوامر EF Core)، ويمكن للسيناريوهات المتقدمة الاستفادة من قوالب إنشاء الهياكل القابلة للتخصيص للتحكم في التعليمات البرمجية المُولدة.

الأدوات والإضافات - إطار عمل الكيانات EF6

تتوفر أدوات وإضافات إطار عمل الكيانات لتحسين أداء إطار عمل الكيانات. [ 44 ]

انظر أيضاً

مراجع

  1. "الإصدارات · dotnet/efcore · GitHub" . GitHub .
  2. كريل، بول (20 يوليو 2012). "مايكروسوفت تُتيح إطار عمل الكيانات مفتوح المصدر" . إنفوورلد . تم الاسترجاع في 24 يوليو 2012 .
  3. ajcvickers (9 مارس 2022). "سياسات دعم إطار عمل الكيانات" . learn.microsoft.com . تم الاطلاع عليه بتاريخ 12 ديسمبر 2022 .
  4. ajcvickers. "مقارنة بين EF6 و EF Core" . learn.microsoft.com . تم الاطلاع عليه بتاريخ 12 ديسمبر 2022 .
  5. "عدم تطابق المعاوقة بين الكائنات والعلاقات" . AgileData.org . تم الاطلاع عليه بتاريخ 12-12-2022 .
  6. ماكليبلانك (15 سبتمبر 2021). "نظرة عامة على إطار عمل الكيانات - ADO.NET" . learn.microsoft.com . تم الاطلاع عليه بتاريخ 12 ديسمبر 2022 .
  7. "موقعو تصويت حجب الثقة في إطار عمل الكيانات | Wufoo" . efvote.wufoo.com . تم الاطلاع عليه بتاريخ 12 ديسمبر 2022 .
  8. "تحديث حول إطار عمل الكيانات في .NET 4 وVisual Studio 2010" . مدونة فريق ADO.NET. 11 مايو 2009. مؤرشف من الأصل في 20 يناير 2010. تم الاطلاع عليه في 1 نوفمبر 2011 .
  9. "EF4.3.1 وEF5 Beta 1 متوفران على NuGet" . مدونة فريق ADO.NET. 29 فبراير 2012. مؤرشف من الأصل في 25 مارس 2012. تم الاطلاع عليه في 27 مارس 2012 .
  10. "EF5 متوفر على CodePlex" . 11 أغسطس 2012. مؤرشف من الأصل في 7 سبتمبر 2017. تم الاطلاع عليه في 20 مارس 2014 .
  11. "EF6 RTM متوفر" . 17 أكتوبر 2013. مؤرشف من الأصل في 30 مارس 2014.
  12. "Entity Framework - الصفحة الرئيسية" . GitHub . 14 سبتمبر 2016.
  13. ajcvickers (14 أكتوبر 2020). "ما الجديد - EF6" . learn.microsoft.com . تم الاطلاع عليه بتاريخ 12 ديسمبر 2022 .
  14. 1 2 "EF7 - منصات جديدة، مخازن بيانات جديدة" . 19 مايو 2014. مؤرشف من الأصل في 29 سبتمبر 2015.
  15. "Entity Framework Core 1.0.0 متوفر الآن" . 27 يونيو 2016.
  16. هانسيلمان، سكوت. "انتهى عصر ASP.NET 5 - تقديم ASP.NET Core 1.0 و .NET Core 1.0 - سكوت هانسيلمان" . www.hanselman.com . تاريخ الاسترجاع: 11 يوليو 2016 .
  17. "الإعلان عن .NET Core 2.0" . مدونة .NET. 14 أغسطس 2017.
  18. "الإعلان عن .NET Core 3.0" . مدونة .NET. 23 سبتمبر 2019.
  19. 1 2 ajcvickers. "خطة لـ Entity Framework Core 5.0" . learn.microsoft.com . تم الاطلاع عليه بتاريخ 12 ديسمبر 2022 .
  20. 1 2 "Microsoft.EntityFrameworkCore 5.0.0" . nuget.org . تم الاسترجاع بتاريخ 12-12-2022 .
  21. "إصدارات وتخطيطات إطار عمل الكيانات الأساسية" . ديسمبر 2023.
  22. ajcvickers. "خطة لـ Entity Framework Core 6.0" . learn.microsoft.com . تم الاطلاع عليه بتاريخ 12 ديسمبر 2022 .
  23. "Microsoft.EntityFrameworkCore 6.0.0" . nuget.org . تم الاطلاع عليه بتاريخ 12-12-2022 .
  24. ajcvickers. "إصدارات EF Core والتخطيط لها" . learn.microsoft.com . تم الاطلاع عليه بتاريخ 12 ديسمبر 2022 .
  25. روث، دانيال (2022-11-08). "الإعلان عن ASP.NET Core في .NET 7" . مدونة .NET . تم الاطلاع عليه بتاريخ 2022-12-12 .
  26. ajcvickers. "ما الجديد في EF Core 7.0" . learn.microsoft.com . تم الاطلاع عليه بتاريخ 12 ديسمبر 2022 .
  27. آرثر، فيكرز (14 نوفمبر 2023). "إطار عمل الكيانات الأساسي 8 (EF8) متوفر اليوم" . مدونة .NET . تم الاطلاع عليه بتاريخ 14 نوفمبر 2023 .
  28. ajcvickers (14 نوفمبر 2023). "ما الجديد في EF Core 8" . learn.microsoft.com . تم الاطلاع عليه بتاريخ 14 نوفمبر 2023 .
  29. "نموذج بيانات الكيان" . MSDN، مايكروسوفت. 2 أغسطس 2012. تم الاطلاع عليه في 15 أغسطس 2013 .
  30. مواصفات CSDL وSSDL وMSL ، MSDN ، مؤرشفة من الأصل بتاريخ 2010-11-08 ، تم استرجاعها بتاريخ 2010-12-06
  31. ajcvickers (2022-03-09). "نقل البيانات من EF6 إلى EF Core - نقل نموذج قائم على EDMX - EF" . learn.microsoft.com . تم الاطلاع عليه بتاريخ 2024-06-07 .
  32. معالج نموذج بيانات الكيان ، MSDN ، تم الاطلاع عليه بتاريخ 2010-12-06
  33. شركة كوجنت سوليوشنز (2009)، الكتاب الأسود لـ ASP.NET 3.5 ، دار دريمتك للنشر، رقم ISBN 978-81-7722-831-1
  34. 1 2 أنواع بسيطة (EDM) ، MSDN ، تم الاطلاع عليه بتاريخ 2010-12-06
  35. عنصر النوع المعقد (CSDL) ، MSDN ، تم استرجاعه في 2010-12-06
  36. أنواع النماذج المفاهيمية ، MSDN ، تم الاطلاع عليه بتاريخ 2010-12-06
  37. OnDelete Element (CSDL) ، MSDN ، تم الاطلاع عليه بتاريخ 2010-12-06
  38. Facets (CSDL) ، MSDN ، تم الاطلاع عليه بتاريخ 2010-12-06
  39. 1 2 الدوال الأساسية (لغة SQL للكيانات) ، MSDN ، تم الاطلاع عليه بتاريخ 29-03-2010
  40. "LINQ to Entities - ADO.NET" . مايكروسوفت ليرن . 15 سبتمبر 2021. تم الاطلاع عليه بتاريخ 13 يونيو 2026 .
  41. "مركز توثيق Entity Framework" . مايكروسوفت ليرن . تم الاطلاع عليه بتاريخ 13 يونيو 2026 .
  42. "أداة تصور استعلامات Linq to Entity - سوق Visual Studio" . marketplace.visualstudio.com . تم الاطلاع عليه بتاريخ 12 ديسمبر 2022 .
  43. ErikEJ. "الأدوات والملحقات - EF Core" . learn.microsoft.com . تم الاطلاع عليه بتاريخ 12-12-2022 .
  44. ajcvickers (9 مارس 2022). "الأدوات والملحقات - EF6" . learn.microsoft.com . تم الاطلاع عليه بتاريخ 12 ديسمبر 2022 .

فهرس

  • لي، كريج (14 يونيو 2010)، ADO.NET Entity Framework Unleashed (  الطبعة الأولى)، Sams ، ص  600، ISBN 978-0-672-33074-2تمت أرشفة هذا النص من النسخة الأصلية في 1 أكتوبر 2012
  • ليرمان، جوليا (أغسطس 2010)، برمجة إطار عمل الكيانات (  الطبعة الثانية)، دار نشر أورايلي ميديا ، ص  912، رقم ISBN 978-0-596-80726-9
  • جينينغز، روجر (3 فبراير 2009)، ADO.NET 3.5 الاحترافي مع LINQ وإطار عمل الكيانات (  الطبعة الأولى)، Wrox ، ص  672، ISBN 978-0-470-18261-1تمت أرشفة هذا النص من المصدر الأصلي بتاريخ 10 أكتوبر 2012 ، وتمت مراجعته بتاريخ 6 فبراير 2010.
  • موستاردا، ستيفانو (ديسمبر 2010)، إطار عمل الكيانات 4.0 قيد التنفيذ (  الطبعة الأولى)، منشورات مانينغ ، ص  450، رقم ISBN 978-1-935182-18-4