Entity Framework

**Entity Framework** (**EF**) היא שלד תוכנה בקוד פתוח של מיפוי אובייקטי-רלציוני (ORM) עבור ADO.NET. זה נכלל במקור כחלק בלתי נפרד מ-.NET Framework, אולם החל מגרסה 6.0 של Entity Framework הוא מוצע בנפרד.

Entity Framework 6.4 הייתה המהדורה האחרונה של הגרסה הקלאסית. למרות שגרסה Entity Framework 6 עדיין נתמכת, היא כבר לא בפיתוח והיא תקבל רק תיקוני אבטחה.

שלד תוכנה חדש הידוע בשם Entity Framework Core (EF Core) הוצג בשנת 2016 עם סט יכולות דומה אך לא מלא. מספור הגרסה של שלד זה התחיל מ-1.0 והגרסה האחרונה של EF Core היא 7.0.

## סקירה כללית
Entity Framework היא סט של טכנולוגיות ב-ADO. NET התומך בפיתוח של יישומי תוכנה מוכווני נתונים. ארכיטקטים ומפתחים של יישומים מוכווני נתונים נאבקו רבות בצורך להשיג שתי מטרות שונות מאוד. עליהם למדל את הישויות, היחסים והלוגיקה של הבעיות העסקיות שהם פותרים, ועליהם לעבוד גם עם מנועי הנתונים המשמשים לאחסון ואחזור הנתונים. הנתונים יכולים להתפרס על מספר מערכות אחסון, לכל אחת פרוטוקולים משלה; גם אפליקציות שעובדות עם מערכת אחסון אחת חייבות לאזן את הדרישות של מערכת האחסון מול הדרישות של כתיבת קוד אפליקציה יעיל וניתן לתחזוקה.

כלי מיפוי יחסי אובייקט-יחסי (ORM) רבים פותחו כדי לאפשר למפתחים לעבוד עם נתונים בצורה של אובייקטים ושדות ספציפיים לתחום, כגון לקוחות וכתובות של לקוחות, ללא צורך לדאוג בנוגע לטבלאות והעמודות הבסיסיות של מסד הנתונים שבהן מאוחסנים נתונים אלה. עם ORM, מפתחים יכולים לעבוד ברמת הפשטה גבוהה יותר כאשר הם עוסקים בנתונים, ויכולים ליצור ולתחזק אפליקציות מוכוונות נתונים עם פחות קוד מאשר ביישומים מסורתיים. Entity Framework הוא פתרון ה-ORM המקודם לשימוש בתוך תשתית הפיתוח של מיקרוסופט.

## היסטוריה
הגרסה הראשונה של Entity Framework (EFv1) נכללה עם . NET Framework 3.5 Service Pack 1 ו-Visual Studio 2008 Service Pack 1, ששוחררו ב-11 אוגוסט 2008. גרסה זו זכתה לביקורת רבה, ואף משכה 'הצבעת אי אמון' שנחתמה על ידי לפחות אלף מפתחים.

הגרסה השנייה של Entity Framework, בשם Entity Framework 4.0 (EFv4), שוחררה כחלק מ-. NET 4.0 ב-12 באפריל 2010 והגיבה לרבות מהביקורות שהושמעו על גרסה 1.

גרסה שלישית של Entity Framework, גרסה 4.1, שוחררה ב-12 באפריל 2011, עם תמיכה ב-Code First.

רענון של גרסה 4.1, בשם Entity Framework 4.1 Update 1, שוחרר ב-25 ביולי 2011. כלל תיקוני באגים ותמיכה בטיפוסים חדשים.

גרסה 4.3.1 שוחררה ב-29 בפברואר 2012. היו כמה עדכונים, כמו תמיכה בהגירה.

גרסה 5.0.0 שוחררה ב-11 באוגוסט 2012 והיא מיועדת ל-. NET framework 4.5. כמו כן, גרסה זו זמינה עבור . Net framework 4, אך ללא יתרונות זמן ריצה על פני גרסה 4.

גרסה 6.0 שוחררה ב-17 באוקטובר 2013 וכעת היא פרויקט קוד פתוח ברישיון Apache License v2. כמו ASP. NET MVC, קוד המקור שלו מתארח ב-GitHub באמצעות Git. לגרסה זו יש מספר שיפורים לתמיכה בקוד תחילה.

מיקרוסופט החליטה לאחר מכן לבצע מודרניזציה, חלוקה לרכיבים ולהפוך את .NET להיות חוצה פלטפורמות ללינוקס, OSX ומקומות אחרים, כלומר הגרסה הבאה של Entity Framework תהיה שכתוב מלא. ב-27 ביוני 2016 הגרסה שוחררה בתור Entity Framework Core 1.0, לצד ASP. NET Core 1.0 ו-. NET Core 1.0. זה נקרא במקור Entity Framework 7, אבל השם שונה כדי להדגיש שזה היה שכתוב מלא ולא שדרוג מצטבר והוא לא מחליף את EF6.

Entity Framework Core 1.0 מורשה תחת Apache License v2, והוא נבנה כולו באופן פתוח ב-GitHub. בעוד Entity Framework Core 1.0 חולק כמה קווי דמיון רעיוניים עם גרסאות קודמות של Entity Framework, זה היה בסיס קוד חדש לחלוטין שנועד להיות יעיל יותר, חזק יותר, גמיש וניתן להרחבה, פועל על Windows, Linux ו-OSX, ותומך במגוון חדש של יחסים. ובסיסי נתונים מסוג NoSQL.

Entity Framework Core 2.0 שוחרר ב-14 אוגוסט 2017, יחד עם Visual Studio 2017 15.3 ו-ASP. NET Core 2.0

Entity Framework Core 3.0 שוחרר ב-23 ספטמבר 2019, יחד עם Visual Studio 2019 16.3 ו-ASP. NET Core 3.0.

Entity Framework Core 3.1 (EF Core 3.1) שוחרר רשמית לשימוש לייצור ב-3 דצמבר 2019 ותהיה הגרסה הנתמכת המועדפת לטווח ארוך עד 3 בדצמבר 2022 לפחות.

Entity Framework Core 5.0 (EF Core 5) שוחרר לשימוש ייצור ב-9 נובמבר 2020.

Entity Framework Core 6.0 (EF Core 6) שוחרר ב-10 נובמבר 2021 ותהיה הגרסה הנתמכת המועדפת לטווח ארוך עד ל-12 בנובמבר 2024 לפחות.

Entity Framework Core 7.0 (EF Core 7) שוחרר ב-8 נובמבר 2022 הוספת תכונות כגון עמודות JSON ועדכונים בכמות גדולה.

## ארכיטקטורה

הארכיטקטורה של ה-ADO. NET Entity Framework, מלמטה למעלה, מורכבת מהדברים הבאים:
* **ספקים ספציפיים למקור נתונים**, שמפשטים את ממשקי ה-ADO.NET לחיבור למסד הנתונים בעת תכנות כנגד הסכימה הרעיונית.
* **ספק מפה**, ספק ספציפי למסד נתונים שמתרגם את עץ הפקודות Entity SQL לשאילתה בסגנון ה-SQL המקורי של מסד הנתונים. הוא כולל את **הגשר הספציפי לאחסון**, שהוא הרכיב האחראי על תרגום עץ הפקודות הגנרי לעץ פקודות ספציפי לאחסון.
* **מנתח EDM ומיפוי תצוגות**, שלוקח את מפרט ה-SDL של מודל הנתונים והאופן בו הוא מתמפה על המודל הטבלאי שבבסיסו ומאפשר תכנות מול המודל הרעיוני. מהסכמה הטבלאית, הוא יוצר תצוגות של הנתונים התואמות למודל הרעיוני. הוא צובר מידע מטבלאות מרובות על מנת לצבור אותם לישות, ומפצל עדכון לישות למספר עדכונים לאיזה טבלה/טבלאות שתרמו לאותה ישות.
* **שאילתות ועדכון [[צינור עיבוד נתונים]]**, מעבד שאילתות, מסנן ומעדכן בקשות כדי להמיר אותן לעצי פקודה קנוניים אשר לאחר מכן מומרים לשאילתות ספציפיות לאחסון על ידי ספק המפה.
* **שירותי מטא נתונים**, המטפלים בכל המטא נתונים הקשורים לישויות, קשרים ומיפויים.
* **עסקאות**, לשילוב עם יכולות העסקאות של האחסון המשמש כבסיס. אם האחסון אינו תומך בעסקאות, יש ליישם תמיכה בשכבה זו.
* **Conceptual layer API**, זמן הריצה שחושף את מודל התכנות לקידוד מול הסכמה המושגית. זה עוקב אחר הדפוס של ADO.NET לשימוש באובייקטי Connection להתייחסות לספק המפה, שימוש באובייקטי Command לשליחת השאילתה, והחזרת EntityResultSets או EntitySets המכילים את התוצאה.
* **רכיבים מנותקים**, אשר מאחסנים באופן מקומי מערכי נתונים וערכות ישויות לשימוש ב-ADO. NET Entity Framework בסביבה מחוברת מדי פעם.
* **מסד נתונים משובץ** : ADO. NET Entity Framework כולל מסד נתונים משובץ קל משקל לאחסון במטמון בצד הלקוח ושאילתה של נתונים יחסיים.
* **כלי עיצוב**, כגון Mapping Designer, כלולים גם ב-ADO. NET Entity Framework, המפשטת את העבודה של מיפוי סכימה רעיונית לסכימה היחסית וציון אילו מאפיינים של סוג ישות תואמים לאיזו טבלה במסד הנתונים.
* **שכבת תכנות**, החושפת את ה-EDM כמבני תכנות שניתן לצרוך על ידי שפות תכנות.
** **שירותי אובייקט**, יוצרים אוטומטית קוד עבור מחלקות CLR שחושפות את אותם מאפיינים כמו ישות, ובכך מאפשרות מופע של ישויות כאובייקטי .NET.
** **שירותי אינטרנט**, החושפים ישויות כשירותי אינטרנט.
* **שירותים ברמה גבוהה**, כגון שירותי דיווח שעובדים על ישויות ולא על נתונים יחסיים.

## מודל נתוני ישות
**מודל נתוני הישות** (**EDM**) מפרט את המודל הרעיוני (CSDL) של הנתונים, תוך שימוש בטכניקת מידול שנקראת בעצמה מודל נתוני ישות, גרסה מורחבת של *[[מודל ישויות קשרים|מודל היחסים בין ישות]]*. מודל הנתונים מתאר בעיקר את ** ואת *ה"אגודות"* בהן הם משתתפים. סכימת ה-EDM באה לידי ביטוי *בשפת הגדרת הסכמה* (SDL), שהיא יישום של XML (שפת סימון מורחבת). בנוסף, יש לציין גם את המיפוי (MSL) של רכיבי הסכמה המושגית (CSDL) לסכימת האחסון (SSDL). מפרט המיפוי מבוטא גם הוא ב-XML.

## קישורים חיצוניים
* 

## הערות שוליים

קטגוריה:תוכנות שהושקו ב-2008
קטגוריה:.NET
קטגוריה:דפים עם תרגומים שלא נסקרו