Entity Framework

Entity Framework
מפתח מיקרוסופט עריכת הנתון בוויקינתונים
גרסה אחרונה 6.4.4 (14 במאי 2020) עריכת הנתון בוויקינתונים
גרסת בטא Entity Framework 6: v6.4.4
Entity Framework Core: v7.0.0
ב־Entity Framework Core: תבנית:Start date and age
נכתבה בשפות C#
סוג רישיון אפאצ'י 2.0 עריכת הנתון בוויקינתונים
קוד מקור https://github.com/dotnet/ef6 עריכת הנתון בוויקינתונים
אתר רשמי
לעריכה בוויקינתונים שמשמש מקור לחלק מהמידע בתבנית

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

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

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

סקירה כללית

[עריכת קוד מקור | עריכה]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Entity Framework Core 7.0 (EF Core 7) שוחרר ב 8 נובמבר 2022 [25][5] הוספת תכונות כגון עמודות 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) של הנתונים, תוך שימוש בטכניקת מידול שנקראת בעצמה מודל נתוני ישות, גרסה מורחבת של מודל היחסים בין ישות.[26] מודל הנתונים מתאר בעיקר את הישויות ואת ה"אגודות" בהן הם משתתפים. סכימת ה-EDM באה לידי ביטוי בשפת הגדרת הסכמה (SDL), שהיא יישום של XML (שפת סימון מורחבת). בנוסף, יש לציין גם את המיפוי (MSL) של רכיבי הסכמה המושגית (CSDL) לסכימת האחסון (SSDL). מפרט המיפוי מבוטא גם הוא ב-XML.

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

[עריכת קוד מקור | עריכה]

הערות שוליים

[עריכת קוד מקור | עריכה]
  1. ^ "Releases · dotnet/efcore · GitHub". GitHub.
  2. ^ Krill, Paul (20 ביולי 2012). "Microsoft open-sources Entity Framework". InfoWorld. נבדק ב-2012-07-24. {{cite news}}: (עזרה)
  3. ^ ajcvickers. "Entity Framework Support Policies". learn.microsoft.com (באנגלית אמריקאית). נבדק ב-2022-12-12.
  4. ^ ajcvickers. "Compare EF6 and EF Core". learn.microsoft.com (באנגלית אמריקאית). נבדק ב-2022-12-12.
  5. ^ 1 2 ajcvickers. "What's New in EF Core 7.0". learn.microsoft.com (באנגלית אמריקאית). נבדק ב-2022-12-12.
  6. ^ "The Object-Relational Impedance Mismatch". AgileData.org (באנגלית). נבדק ב-2022-12-12.
  7. ^ mcleblanc. "Entity Framework Overview - ADO.NET". learn.microsoft.com (באנגלית אמריקאית). נבדק ב-2022-12-12.
  8. ^ "Entity Framework Vote of No Confidence Signatories | Wufoo". efvote.wufoo.com. נבדק ב-2022-12-12.
  9. ^ "Update on the Entity Framework in .NET 4 and Visual Studio 2010". ADO.NET team blog. 11 במאי 2009. אורכב מ-המקור ב-20 בינואר 2010. נבדק ב-1 בנובמבר 2011. {{cite web}}: (עזרה)
  10. ^ "EF4.3.1 and EF5 Beta 1 Available on NuGet". ADO.NET team blog. 29 בפברואר 2012. אורכב מ-המקור ב-25 במרץ 2012. נבדק ב-27 במרץ 2012. {{cite web}}: (עזרה)
  11. ^ "EF5 Available on CodePlex". 11 באוגוסט 2012. אורכב מ-המקור ב-7 בספטמבר 2017. נבדק ב-20 במרץ 2014. {{cite web}}: (עזרה)
  12. ^ "EF6 RTM Available". 17 באוקטובר 2013. אורכב מ-המקור ב-2014-03-30. {{cite web}}: (עזרה)
  13. ^ "Entity Framework - Home". GitHub. 14 בספטמבר 2016. {{cite web}}: (עזרה)
  14. ^ ajcvickers. "What's new - EF6". learn.microsoft.com (באנגלית אמריקאית). נבדק ב-2022-12-12.
  15. ^ 1 2 "EF7 - New Platforms, New Data Stores". 19 במאי 2014. אורכב מ-המקור ב-2015-09-29. {{cite web}}: (עזרה)
  16. ^ "Entity Framework Core 1.0.0 Available". 27 ביוני 2016. {{cite web}}: (עזרה)
  17. ^ Hanselman, Scott. "ASP.NET 5 is dead - Introducing ASP.NET Core 1.0 and .NET Core 1.0 - Scott Hanselman". www.hanselman.com. נבדק ב-2016-07-11.
  18. ^ "Announcing .NET Core 2.0". .NET Blog. 14 באוגוסט 2017. {{cite web}}: (עזרה)
  19. ^ "Announcing .NET Core 3.0". .NET Blog. 23 בספטמבר 2019. {{cite web}}: (עזרה)
  20. ^ 1 2 ajcvickers. "Plan for Entity Framework Core 5.0". learn.microsoft.com (באנגלית אמריקאית). נבדק ב-2022-12-12.
  21. ^ 1 2 "Microsoft.EntityFrameworkCore 5.0.0". nuget.org (באנגלית). נבדק ב-2022-12-12.
  22. ^ ajcvickers. "Plan for Entity Framework Core 6.0". learn.microsoft.com (באנגלית אמריקאית). נבדק ב-2022-12-12.
  23. ^ "Microsoft.EntityFrameworkCore 6.0.0". nuget.org (באנגלית). נבדק ב-2022-12-12.
  24. ^ ajcvickers. "EF Core releases and planning". learn.microsoft.com (באנגלית אמריקאית). נבדק ב-2022-12-12.
  25. ^ Roth, Daniel (2022-11-08). "Announcing ASP.NET Core in .NET 7". .NET Blog (באנגלית אמריקאית). נבדק ב-2022-12-12.
  26. ^ "Entity Data Model". MSDN, Microsoft. 2 באוגוסט 2012. נבדק ב-15 באוגוסט 2013. {{cite web}}: (עזרה)