PracticU

יצירת Interceptor
עבור מסד הנתונים

בלי כתוביותעם כתוביות
PracticU › קורס דוט-נט - NET Core. - עם Rest API › יצירת Interceptor עבור מסד הנתונים
יצירת Interceptor עבור מסד הנתונים
Interceptor הוא Middleware ברמת מסד הנתונים: פונקציה שמיירטת כל פנייה למסד ומבצעת עליה פעולה. ההרצאה בונה Interceptor שמדפיס לקונסול הודעה על כל קריאה וכתיבה.
איך זה עובד
1. ההגדרה: Middleware הוא פונקציה שמתבצעת אוטומטית בין התחלה וסיום של פעולה כלשהי, לאו דווקא בקשת HTTP. בהקשר של מסדי נתונים קוראים לזה Interceptor (מלשון ליירט). הרעיון זהה.
2. המחלקה: DatabaseInterceptor יורשת מ-DbCommandInterceptor.
3. הפונקציה: עושים override ל-ReaderExecuting, שמתבצעת לפני שהפעולה רצה במסד. הגרסה ReaderExecuted רצה אחרי.
4. הפעולה: משנים צבע בקונסול ל-Cyan. אם command.CommandText אחרי ToLower מתחיל ב-select, מציגים "Reading data from the database". אחרת מציגים הודעה על שינוי נתונים, כי מדובר ב-insert, update או delete. אחר כך מחזירים עם Console.ResetColor().
5. רישום: ב-Program, בקריאה ל-AddDbContext, מיד אחרי UseSqlServer מוסיפים .AddInterceptors(new DatabaseInterceptor()).
6. בדיקה: מריצים ושולחים ב-Postman את כל הספרים, ורואים את ההודעה "Reading data from the database". הוספת ספר JavaScript for beginners במחיר 100 מציגה את הודעת השינוי.
שימו לב
- בדוגמה מוצגת רק הודעה בלי השאילתה עצמה. הפונקציה מקבלת גם את תוצאת הפעולה ומידע נוסף.
- הודעות ה-Action Time מהפילטר הקודם מופיעות עדיין בקונסול, והמרצה מציין שאפשר להסירן.
כך אפשר ליירט כל גישה למסד ולבצע בה פעולה משלנו.

פרקי ההרצאה: יצירת Interceptor עבור מסד הנתונים

  1. 00:00

    הגדרת Middleware ו-Interceptor

  2. 01:08

    בניית מחלקת DatabaseInterceptor

  3. 01:43

    הצגת השאילתה לפני הביצוע

  4. 02:39

    זיהוי קריאה מול שינוי נתונים

  5. 03:17

    רישום ה-Interceptor ב-Program

תמלול ההרצאה: יצירת Interceptor עבור מסד הנתונים

הטקסט המלא של הדקות הראשונות בהרצאה «יצירת Interceptor עבור מסד הנתונים» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

    אם אתם זוכרים, ההגדרה של middleware הייתה פונקציה שמתבצעת אוטומטית בין התחלה וסיום של איזושהי פעולה. לאו דווקא htp request ו-htp response של rest api. middleware זה מונח יותר כללי, של אם אנחנו רוצים לבצע איזושהי פעולה באמצע בין לבין משהו.

  2. 00:22

    אז בואו ניישם עוד middleware שקשור לדאטאבייס. האמת שעשינו את זה פעם במודול מעניין או בקורס מעניין של דאטאבייסים, בואו נראה איך אנחנו יכולים לבצע את זה כאן, איך אנחנו בעצם רושמים את אותו middleware של דאטאבייס.

  3. 00:38

    למעשה כאן זה נקרא יותר interceptor, כאשר interceptor זה גם כן פונקציה שמתבצעת בין לבית, שהמערכת מיירטת או intercept זה ליירט איזושהי בקשה או פעולה ואוטומטית מבצעת פונקציה או מצמידה פונקציה לאותה פעולה.

  4. 00:58

    למעשה השם אינטרספטור ומידלווייר זה אותו הדבר, זה אותו רעיון. אז לפעמים קוראים לזה אינטרספטור בהקשר של דאטאבייסים, זה נקרא אינטרספטור, אבל לענייננו זה מידלווייר שמבצע פעולה בין לבין.

  5. 01:14

    לא HTTP ריקווסט, אלא דאטאבייס, גישה לדאטאבייס. בואו נבנה דאטאבייס אינטרספטור, שזה קלאס, ומה שאנחנו רוצים לעשות זה לרשת את db command אינטרספטור ולדרוס פונקציה שנקראת reader executing.

  6. 01:38

    יש לנו פה executed אחרי שאותה פעולה התבצעה בדאטה בייס ואקסקיוטינג לפני שהפעולה מתבצעת בדאטה בייס. אז בואו ניקח את אקסקיוטינג ומה שאנחנו רוצים לעשות זה לדוגמה להציג על המסך את השאילתה שכרגע אנחנו הולכים לשלוח לדאטה בייס.

  7. 01:58

    נשנה את הצבע, console foreground שווה, איזה צבע בא לכם? בואו ניקח סיין, יאללה, טורקיז. ונגיד כזה דבר, אם ה-command שקיבלנו לפונקציה, שימו לב שאנחנו מקבלים פה כל מיני דברים מעניינים, Command ותוצאה שמוחזרת ומידע לגבי הפעילות שכרגע התבצעה, אז אם ה-Command הזה בעצם מכיל את השאילתה,

  8. 02:23

    נקודה, Command Text, נמיר אותה ל-Lowercase, שאילתות אסקיוליות יכולות להיות upper case ויכולות להיות lower case בכל מיני מערכות. Starts with Select.

  9. 02:36

    אז אנחנו לדוגמה רוצים להציג הודעה. Console ריבינג דטה פרום דה דטה בייס. פה חסר לי סוגריים עגולים. אלס, בואו נניח שבמקרה כזה עושים איזשהו שינוי.

  10. 02:52

    אנחנו כמובן יכולים לבדוק אם זה אינסרט או אפט או דיליט אבל לענייננו בואו נגיד שאני רוצה להציג או רידינג או צ'יינג'ינג דאטה אין דאטה בייס ואז צ'יינג'ינג מתייחס לאינסרט אפדייט או דיליט כולם בעצם משנים מידע לאחר מכן נחזיר את הקונסול לצבע המקורי קונסול נקודה ריסט קולור וכל מה שאנחנו רוצים לעשות זה ו-to register ולרשום את האינטרספטור הזה.

  11. 03:24

    איפה רושמים את האינטרספטור ברמת הפרוגרמה. למעשה יש לנו כאן את ה-add db context use server ופה בדיוק אנחנו אומרים לו add

ההרצאה הקודמת: יצירת Short-Circuit Filter

ההרצאה הבאה: גלישה ל-Route שאינו קיים

הרצאות קשורות מקורסים אחרים

  • יצירת מסד הנתונים מהקוד - Creating the Database
  • יצירת מסד נתונים - SQL
  • יצירת מסד נתונים ב-phpMyAdmin
  • הסבר על Frida Interceptor Replace

קורסים נוספים במסלול

  • קורס Entity Framework Core - עבודה עם מסד נתונים בדוט-נט
  • קורס ASP.NET
  • קורס MVC
  • קורס Git ו-GitHub עם Visual Studio